Python Django编辑模型&x27;s字段并发
我稍微简化了我的代码,但基本上我正在做的是,我有两个不同的URI,它们都在同一个模型上执行一些更改(虽然不是同一个字段)。 这里的问题是,我的客户基本上同时给他们打电话Python Django编辑模型&x27;s字段并发,python,django,database,Python,Django,Database,我稍微简化了我的代码,但基本上我正在做的是,我有两个不同的URI,它们都在同一个模型上执行一些更改(虽然不是同一个字段)。 这里的问题是,我的客户基本上同时给他们打电话 # /uri/one/{pk}/ class ModelOneView(generic.View): def post(self, request, pk): # pk has the same value as below Model.objects.filter(pk=pk).update(nam
# /uri/one/{pk}/
class ModelOneView(generic.View):
def post(self, request, pk): # pk has the same value as below
Model.objects.filter(pk=pk).update(name=request.POST['name'])
return HttpResponse(status=200)
# /uri/two/{pk}/
class ModelTwoView(generic.View):
def post(self, request, pk): # pk has the same value as above
Model.objects.filter(pk=pk).update(bool_field=True)
return HttpResponse(status=200)
Django和Client在任何时候都不会抛出任何错误,我会收到OK响应。但是,我试图对callFirstURI()进行的更改;永远不要访问数据库。但是当我注释掉callSecondURI()时
现在,对第一个URI的调用按预期工作
我怎样才能解决这个问题?我正在使用psql、Python 2.7和Django 1.9。
如何修改模型的字段而不存在此类冲突的风险
编辑
我想为这个问题找到一个服务器端的解决方案,而不是只对客户端的javascript请求进行更有利的计时。您可能希望尝试两个建议:
callFirstURI()
后运行callSecondURI()
function notHealthyForDjango() {
callFirstURI();
//callSecondURI();
}
嘿,雅各布!谢谢你的回复。按照你在第一封推荐信中写的那样做效果很好。但是,如果可能的话,我想找到一个服务器端解决方案来解决这个问题。我的错是没有弄清楚。稍后我会查看你的第二个推荐!嗨,很高兴我帮了忙。如果解决方案有效,那么请考虑接受答案,尽管我理解我没有给出服务器端的方法。你是否尝试过我的建议?对不起,我还没有时间。我将在本周晚些时候回到这里,看看这是否解决了问题。这看起来很有希望,我真的非常感谢你的帮助!很抱歉耽搁了。很高兴知道它起作用了。今天无法对您的问题进行投票(投票数不足,将于明天进行投票)
function notHealthyForDjango() {
callFirstURI();
//callSecondURI();
}
def post(self, request, pk): # pk has the same value as below
with transaction.atomic():
Model.objects.select_for_update().filter(pk=pk).update(
name=request.POST['name'])
return HttpResponse(status=200)