我有一个带有简单模型的 Django 应用程序:
class ThingToPick(models.Model):
title = models.CharField(max_length=200)
start_date = models.DateTimeField('date published', auto_now=True)
status = models.IntegerField(default=0)
filedata = models.TextField()
我的一些观点:
exec_item = ThingToRun.objects.filter(status=0).order_by('start_date')[0]
exec_item.status = 1
exec_item.save()
我需要某种方法来从一个且只有一个并发用户中选择每个 ThingToRun
。我知道这已损坏,我该如何修复它?
最佳答案
在这里,您真正想做的不仅仅是挑选一些东西,而是挑选一些东西并将其标记为正在进行中,以便在此期间没有其他人挑选它。所以你想要的方法是select_for_update
:
exec_item = ThingToRun.objects.select_for_update().filter(status=0).order_by('start_date')[0]
exec_item.status = 1
exec_item.save()
...process exec_item ....
关于python - 如何自动从数据库中选取一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26716485/