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

时间:2018-01-26 10:33:30

标签: django forms save boolean modelform

我有以下型号:

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

设置为" False"作为默认值。

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

我已阅读{{3}}并且没有解释这是如何运作的。

2 个答案:

答案 0 :(得分:2)

您可以在视图中执行此操作。

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

答案 1 :(得分:1)

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

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

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

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

if not self.pk:
    self.is_published = True