未在表单

时间:2016-08-18 13:48:37

标签: python django

我正在使用django 1.5。

在我的模型定义中,我有一个定义了default=True的布尔字段。但是,使用我的modelForm保存记录时,该值不会与记录一起保存为True;它保存为False

forms.py

class ExampleForm(forms.ModelForm):
    hours = forms.DecimalField(required=False,
        max_digits=5,
        decimal_places=2,
        widget=forms.TextInput(attrs={'placeholder':'3.5'}))

    class Meta:
        model = Example
        exclude = ('fk')

models.py

class Example(models.Model):
    id = models.AutoField(primary_key=True)
    fk = models.ForeignKey(FK)

    hours = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True)
    active = models.BooleanField(default=True)

这样设置给我的方式似乎是因为表单没有提供active,因为在验证记录时没有提供任何值,因此它应该默认为default值在model中设置。事实并非如此。它默认为False。但是,我注意到如果我明确地将其添加到exclude d字段,则默认值会保留在True。即如果我将此行exclude = ('fk')更改为exclude = ('fk','active')并更改其他内容,则验证会按预期进行。

这是正确的行为吗? 我的假设是,如果未在表单中指定模型字段,它将使用模型中定义的default值是错误的吗?这对我来说似乎违反直觉...只是想确定我没有遗漏任何东西。

0 个答案:

没有答案