Django models: default value for column(Django 模型:列的默认值)
问题描述
我有以下 Django
模型代码:
I have following Django
model code:
status = models.PositiveIntegerField(default = 0b000)
comments_allowed = models.BooleanField(default = True) # whether comments are allowed to this post
但我预计,它会生成类似的 SQL
But I expected, it would generate SQL like
`status` integer NOT NULL default '4',
`comments_allowed` bool NOT NULL default TRUE
这没有发生,当我运行 manage.py sqlall appname
它会产生:
Which is not happening and when I run manage.py sqlall appname
it produces:
`status` integer UNSIGNED NOT NULL,
`comments_allowed` bool NOT NULL
深入研究 Django
的代码和谷歌搜索并没有给我什么,但 James Bennet 的评论认为 default
不会影响生成 SQL
,但需要 Django 管理员.即使是这样,我如何获得预期的效果?
Delving into Django
's code and googling gave me nothing, but James Bennet's comment that default
is not assumed to affect generating SQL
, but needed for Django admin. Even if so, how do I get desired effect?
我的 Django
版本是 1.3.0 最终版
My Django
version is 1.3.0 final
推荐答案
请注意,default
参数也可以采用可调用对象:https://docs.djangoproject.com/en/dev/ref/models/fields/#default.这当然是 SQL 中无法重现的行为!因此,Django 不可能为每种可能的情况生成 SQL.看起来为了简单和一致性,他们选择不为任何情况生成 SQL.
Note that the default
parameter can also take a callable object: https://docs.djangoproject.com/en/dev/ref/models/fields/#default. That is certainly a behavior that cannot be reproduced in SQL! So it would not be possible for Django to generate SQL for every possible case. It looks like for the sake of simplicity and consistency they have chosen not to generate SQL for any case.
这篇关于Django 模型:列的默认值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Django 模型:列的默认值


基础教程推荐
- 带有WHERE子句的LAG()函数 2022-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 带更新的 sqlite CTE 2022-01-01