无法使用Django ModelForm更新BooleanField

时间:2017-10-04 04:16:07

标签: python django

使用Django 1.11和Python 3.4

我有一个模特:

class ToDo(models.Model):
    completed = models.BooleanField(default=False)

我希望用户能够通过单击复选框为模型更新此字段,因此我按如下方式创建了ModelForm:

class CompletedForm(ModelForm):
class Meta:
    model = ToDo
    fields = ['completed']

我遇到的问题是了解如何在用户单击复选框时让数据库更新,以便完成的字段将在True或False之间切换。在views.py中:

if request.method == 'POST':

    for x in range(0, all_todos.count()):
        a = all_todos[x]
        completedform = CompletedForm(request.POST, instance=a)        


else:
    for x in range(0, all_todos.count()):
        a = all_todos[x]
        print(a)
        completedform = CompletedForm(instance=a)

我在GET或POST方法的情况下呈现了复选框,并将每个框链接到特定实例。我假设大多数逻辑都将在POST方法中进行,因为这会对数据库进行更改。

谢谢

1 个答案:

答案 0 :(得分:0)

如果在ToDo数据中有if request.method == 'POST': ids = request.POST.get('todo') # we should get all id from ToDo, should be int ToDo.objects.filter(pk__in=ids).update(completed=True) 个ID列表,那么就有更简单的方式来更新所有数据。

http.get