我正在使用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
值是错误的吗?这对我来说似乎违反直觉...只是想确定我没有遗漏任何东西。