【发布时间】:2009-06-14 13:52:27
【问题描述】:
我在 Django 应用程序中有这样一段代码
def update_account(user_account,add_widget_count):
user_account.add_widgets(add_widget_count)
user_account.save()
notify_other_system_about_account_update(user_account)
当我将它作为应用程序的一部分运行时,一切正常。特别是,当我的其他系统(django 外部)收到通知时,它会检查数据库,并更新小部件计数。
但是,当我从管理网站运行上述代码时,出现了问题。当我的其他系统收到通知时,它看不到数据库中的更新值。我通过放置断点并检查数据库进行确认,并且在调用 .save() 后它没有得到更新 - 在非管理站点调用中,当我在此断点期间检查时数据库会更新。只有在我让应用程序运行之后,数据库才会更新。
django 管理中间件是否在执行某种延迟或延迟 od DB 写入操作?
更新
我什至将对notify_other_system_about_account_update(user_account) 的调用移至我的 UserAccount 对象上的 post_save 信号处理程序。信号会触发,但是当我得到它时。在我的信号处理程序返回后,数据库会在某个时候更新。此行为仅在从管理网站内运行时才会发生。
【问题讨论】: