【发布时间】:2014-10-24 01:26:30
【问题描述】:
我有如下预订模式。
class Reservation(models.Model):
user = models.ForeignKey('index:User', null=True)
shop = models.ForeignKey('index:Shop')
datetime = models.DateTimeField(null=True, error_messages={})
使用网站的客户可以预订,如果他们点击预订按钮 表单提交发生。视图描述如下。
...
if form.is_valid:
user = request.user
# check if reservation happend before by other customer
if reservation.user == None:
# if reservation user attribute is empty. allocate user attribute.
reservation.user = user
reservation.save()
但是让我们猜测两个人,A 和 B 正在尝试预订同一个预订对象。第一次单击并检查reservation.user 是否为None,并尝试将用户属性分配给reservation 对象,而B 检查reservation.user 是否为None。
在这种情况下,B 可以覆盖 reservation.user 属性。但我不希望这种覆盖发生.. 也让 B 知道预订已经完成。我怎样才能做到?
提前致谢
【问题讨论】:
标签: django save overriding race-condition