gpt4 book ai didi

Django更新和保存异步?

转载 作者:行者123 更新时间:2023-12-03 10:31:53 31 4
gpt4 key购买 nike

我们有一个模型,它只允许它的一个实例为 active :

class MyModel(models.Model):
active = models.BooleanField()

def save(self, *args, **kwargs):
if self.active:
MyModel.objects.update(active=False)
super(MyModel, self).save(*args, **kwargs)

这似乎有效,通过了简单的测试以确保只有一个实例处于事件状态。

但是,它最近在我们的生产服务器上使用过,并且表现得好像 update调用在保存后执行,因此所有实例都以 active=False 结束- 这不会一直发生。

难道是更新在保存后以某种方式运行?还是我需要在其他地方寻找问题?

最佳答案

Django update and save asynchronous?



不,Django 的 updatesave不是异步的。

Could it be that the update is running after the save somehow?



是的,有可能。

我怀疑正在发生的是,当 Django 告诉您的数据库执行更新时,您的数据库会立即告诉 Django 在执行更新时更新已经发生 在后台 .

因此,您的 Django 代码继续执行下一条语句,因为它已从数据库中获得响应。

Or do I need to look elsewhere for the issue?



是的。也许在您的数据库的 SO 标签或邮件列表下问这个问题。我能想到的一个简单解决方法是在更新发生时显式锁定您的表。虽然我不确定什么是最好的方法,因为我没有太多使用数据库的经验。

关于Django更新和保存异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51112666/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com