Python 是否';默认值=…';在Django模型字段集';空白=真';默认情况下?
在应用Python 是否';默认值=…';在Django模型字段集';空白=真';默认情况下?,python,django,Python,Django,在应用default设置时,我对Django model字段有一个问题。我的问题如下: # 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_clea
default
设置时,我对Django model字段有一个问题。我的问题如下:
# 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()
问题是,当我为一个字段设置默认值时,空白
会自动设置为真
另外,我知道null
和blank
之间有什么区别,我只想找出与default
相关的问题,除非您指定blank=True
和/或null=True
。在您的示例中,模型会进行验证,因为您已将a
默认设置为1,并将b
设置为1.1。这两个字段都不是空的,因此您不会遇到与您所问问题相符的情况
尝试将data={'b':1.1}
更改为data={'a':1.1}
,看看会发生什么-您应该会得到一个字段验证错误 如果将默认值
放在模型字段上,实际上它并没有设置blank=True
。当您初始化模型时
instance = ModelClass(**field_data)
django将检查所有字段,如果字段值不存在,那么它将通过调用field
类上的get\u default()
方法(查找默认值)尝试签入默认值。是。Django总是这样做。如果您不需要该功能,请简单设置blank=False
为清晰起见编辑的问题标题。因此,在这种情况下,使用默认值,模型实例将在执行full\u clean
之前将所有字段设置为特定值?是的。您可以通过instance=ModelClass(**field\u data)进行检查;打印实例.field
,具有默认值的字段。因此,default
,blank
的常见用法,而null
对于某个模型字段,要么设置default=…
,要么设置blank=…
和null=…
的组合,而不同时设置default
和blank
值?