【发布时间】:2017-09-24 21:39:55
【问题描述】:
我正在使用 django (1.5 with mysql) select_for_update 方法从一个模型中获取数据并根据请求将此数据提供给用户,但是当两个用户同时请求时,它为两个用户返回相同的数据,请参阅示例代码如下
models.py
class SaveAccessCode(models.Model):
code = models.CharField(max_length=10)
class AccessCode(models.Model):
code = models.CharField(max_length=10)
state = models.CharField(max_length=10, default='OPEN')
views.py
def view(request, code):
# for example code = 234567
acccess_code = AccessCode.objects.select_for_update().filter(
code=code, state='OPEN')
acccess_code.delete()
SaveAccessCode.objects.create(code=code)
return
并发请求会生成两条相同代码的SaveAccessCode记录,请指导我如何更好地处理这种情况
【问题讨论】:
-
为什么不能为两个用户提供相同的数据?你为什么不想要它,它应该做什么呢?你是怎么调用这个方法的?
标签: python mysql django python-2.7 django-1.5