每个用户都有一个模型字段,用于跟踪我们网站上的分数。每次用户做一些我想要加分或减去他们的分数。
在这种特殊情况下,我想在我的网站上发布帖子时更改用户分数。我可以访问用户的分数,但不能修改它。以下是我到目前为止的情况:
def createPost(request):
user = UserProfile.objects.get(user=request.user)
current_score = user.user_score
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
...
user.user_score = current_score - 1
...
else:
form = PostForm()
return render(request,'feed/userpost_form.html',{'form':form})
我没有收到任何错误,发布帖子的工作正常,只是没有修改用户的分数。另外,我正在使用Django 1.11
答案 0 :(得分:5)
你错过了array.splice(0,4)
顺便说一下,另一种方法可能是:
user.save()
上述方法中提到的重要特征是:
另一个有用的 F()的好处是拥有数据库 - 而不是Python - 更新字段的值可避免竞争条件。 https://docs.djangoproject.com/en/1.8/ref/models/expressions/#avoiding-race-conditions-using-f