尝试使用0值更新布尔变量,但它保持不变

时间:2015-01-22 13:18:07

标签: python django

我正在尝试更新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它将更新很好。有人能告诉我哪里错了吗?

2 个答案:

答案 0 :(得分:3)

request.POST中的值始终是字符串,因此您的条件永远不会成立。

答案 1 :(得分:0)

字符串永远不会等于数字,因此您应该与"0"而不是0进行比较:

if request.POST.get("rating", "0") == "0":
顺便说一句,你可以将你的if语句重构为简单的赋值:

t.rating = request.POST.get("rating", "0") != "0"