一尘不染

Django模型:列的默认值

mysql

我有以下Django模型代码:

status = models.PositiveIntegerField(default = 0b000)
comments_allowed = models.BooleanField(default = True) # whether comments are allowed to this post

但是我希望,它将生成类似

`status` integer NOT NULL default '4',
`comments_allowed` bool NOT NULL default TRUE

这没有发生,当我运行manage.py sqlall appname它时会产生:

`status` integer UNSIGNED NOT NULL,
`comments_allowed` bool NOT NULL

深入研究Django的代码并进行谷歌搜索没有给我任何好处,但是James
Bennet的注释default不被认为会影响生成SQL,但是Django管理员需要它。即使是这样,我如何获得理想的效果?

我的Django版本是1.3.0最终版


阅读 237

收藏
2020-05-17

共1个答案

一尘不染

请注意,该default参数也可以采用可调用对象:https
:
//docs.djangoproject.com/en/dev/ref/models/fields/#default。这当然是无法在SQL中重现的行为!因此,Django无法针对每种可能的情况生成SQL。出于简单性和一致性的考虑,他们似乎选择了在任何情况下都不生成SQL。

2020-05-17