Django 数据库列的默认值

17 投票
1 回答
5973 浏览
提问于 2025-04-20 07:52

Django 是一个流行的 web 框架,它有一个模型字段的默认值设置(https://docs.djangoproject.com/en/dev/ref/models/fields/#default)。不过我知道,每次通过 Django 创建新对象时,这个默认值都会被调用。如果我们用原始查询(也就是使用 django.db.connection.cursor)来插入或创建记录,就会出现一个错误,提示字段 'xyz' 没有默认值。

那么,如何在模型中表示数据库层面的列默认值呢?就像 db_index 一样。

我希望大家能理解我的问题。

1 个回答

12

现在有一个开放的问题单 470,讨论在SQL结构中加入默认值的事情。

在这个功能被加入到Django之前,如果你想在SQL结构中设置默认值,就得自己手动运行修改表的命令,或者写一个迁移脚本来执行这些命令。

需要注意的是,Django允许使用可调用对象作为默认值,所以即使这个功能被加入到Django,也不能保证所有的默认值都能在数据库中实现。

撰写回答