我正在尝试更新Boolean
中的field
views.py
代码:
try:
t = Rating.objects.get(answer_id=request.POST.get("answer", ""), user_id=request.POST.get("user", ""))
if request.POST.get("rating", 0) == 0:
t.rating = False
else:
t.rating = True
t.save(update_fields=['rating'])
except Rating.DoesNotExist:
form.save(commit=True)
但如果前一个值为1并且我尝试传递false,则它保持不变。如果以前的值为0并且我试图传递1它将更新很好。有人能告诉我哪里错了吗?
答案 0 :(得分:3)
request.POST
中的值始终是字符串,因此您的条件永远不会成立。
答案 1 :(得分:0)
字符串永远不会等于数字,因此您应该与"0"
而不是0
进行比较:
if request.POST.get("rating", "0") == "0":
顺便说一句,你可以将你的if
语句重构为简单的赋值:
t.rating = request.POST.get("rating", "0") != "0"