Django模型字段中的'default = ...'默认设置为'blank = True'吗?

时间:2017-03-07 06:59:18

标签: python django

在应用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。我知道nullblank之间有什么区别,我只是想弄清楚与default相关的问题。

3 个答案:

答案 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