什么是竞争问题:
多个用户,同时操作某一字段时,没有期望的返回。
F()函数:
让数据库进行operation,而不是python,从而达到避免竞争。
from django.db.models import F
def vote(request, choice_id):
selected_choice = question.choice_set.get(pk=request.POST['choice'])
selected_choice.votes = F('votes') + 1
selected_choice.save()
F()在分配给模型实例后,分配给模型字段的对象将被保留,并应用于每个对象的save
selected_choice.votes = F('votes') + 1
selected_choice.save()
selected_choice.choice_text = 'Just hacking again!'
selected_choice.save()