You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让已加载的Django Model对象与外部修改的数据库记录即时同步?

Django模型对象与外部修改的数据库记录同步方案

内置解决方案:refresh_from_db()方法

Django自带了专门的方法,能让已加载的模型实例从数据库重新拉取最新数据——直接调用对象的refresh_from_db()方法即可:

# 初始加载对象
book = Book.objects.get(id=1)
print(book.title) # 输出 '21 century'

# 外部通过PGAdmin修改数据库后,调用同步方法
book.refresh_from_db()

# 现在输出最新内容
print(book.title) # 输出 '22 century'

如果只需要同步特定字段,还可以指定fields参数,减少不必要的数据库查询开销:

book.refresh_from_db(fields=['title'])

替代方案:重新查询实例

要是不想修改原有实例,也可以直接重新执行查询获取最新对象:

book = Book.objects.get(id=book.id)

这种方式会生成一个新的模型实例,自带数据库的最新数据。

注意事项

  • 务必确保外部的数据库修改已经提交(比如PGAdmin中执行的SQL完成提交),如果修改处于未提交的事务中,即便调用refresh_from_db()也拿不到最新数据,这是数据库事务隔离机制的正常表现。

内容的提问来源于stack exchange,提问作者Rock Dev Mufasa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:05:12