2

我在 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 信号处理程序。信号会触发,但是当我得到它时。在我的信号处理程序返回后,数据库会在某个时候更新。此行为仅在从管理网站内运行时才会发生。

4

1 回答 1

4

我发现了这个问题。django 管理员使用视图范围的数据库事务。我需要在通知外部系统之前手动提交事务

于 2009-06-14T15:05:28.920 回答