【发布时间】:2018-12-10 12:55:16
【问题描述】:
所以我最近了解到,我们在 Django 字段中指定的 default 仅用于填充预先存在的行,并且不能作为数据库级别的“真实”默认值。这可以通过从数据库 shell 中查找 column_default 来验证。
如果我理解正确,Postgres 使用default 在没有输入时输入值。如果是这样,那么我们应该无法在不提供默认值的情况下在 Django 中创建新对象,对吧?
前 -
class MyModel(models.Model):
name = models.CharField(max_length=255)
status = models.BooleanField(default=True) # new field added
对于上述模型,default 仅用于为预先存在的行回填新添加的字段。它实际上并没有在数据库级别设置默认值。
column_name | column_default
-------------+----------------
mymodel |
但如果是这样,我应该无法运行此查询 -
MyModel.objects.create(name='test')
因为没有“真正的”默认值。但我可以,但我不明白为什么。
谢谢!
【问题讨论】:
标签: django postgresql postgresql-9.5 django-1.9