在应用default
设置时,我对Django模型字段有疑问。我的问题如下:
# Model description
class aa(models.Model):
a = models.FloatField(default=1)
b = models.FloatField()
将条目插入数据库时,我应用以下函数进行验证,没有任何错误:
data = {'b': 1.1} # Just for demo...
p = aa(**data)
p.full_clean()
p.save()
问题在于,当我为字段设置default
值时,blank
会自动设置为True
吗?
P.S。我知道null
和blank
之间有什么区别,我只是想弄清楚与default
相关的问题。
答案 0 :(得分:1)
除非您指定blank=True
和/或null=True
,否则Django模型字段默认为必需。在您的示例中,模型会进行验证,因为您已将a
默认为1并将b
设置为1.1。这两个字段都不是空白,所以你没有遇到遇到你问的问题的情况。
尝试将data = {'b': 1.1}
更改为data = {'a': 1.1}
并查看会发生什么 - 您应该收到字段验证错误。
答案 1 :(得分:1)
如果您将default
放在模型字段上,实际上它没有设置blank = True
。初始化Model
时
instance = ModelClass(**field_data)
django将检查所有字段,如果字段值不存在,那么它将通过在get_default()
类上调用Field
方法(查找默认值)来尝试checkin默认值。
答案 2 :(得分:0)
是。 Django总是这样做。如果您不需要该功能,请将其设置为blank = False