Django 表单保存 - 更新布尔字段

Django form save - update boolean field

我有以下型号:

class Survey(models.Model):
    is_published = models.BooleanField()

默认设置为 "False"。

我正在使用 modelForm 将其添加到表单中。当我在表单上调用 save() 方法时,我想将 "False" 更改为 "True" 并将其保存到数据库中。我该怎么做?

我已经通读了 https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/ 但它没有解释这是如何工作的。

您在视图中执行此操作。

if form.is_valid()
    obj = form.save(commit=False)
    obj.is_published = True
    obj.save()
    return redirect('wherever')

在你的模型下你可以定义保存方法:

def save(self, *args, **kwargs):
    ...
    self.is_published = True
    ...
    super(Survey, self).save(*args, **kwargs)

然而,这意味着每次保存模型实例时,该字段都会更改!

如果您只想在创建实例时更改它,您可以添加此检查:

if not self.pk:
    self.is_published = True