python django models创建mysql数据库表default、blank属性失效 5

django创建表设置default、blank属性没有效果求大神赐教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!... django 创建表设置default、blank属性没有效果 求大神赐教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 展开
 我来答
GTA小鸡
高粉答主

2018-06-25 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部

default属性只在Django的ORM模型中有效,不会真正映射到数据库里。要设置数据表的DEFAULT属性,你可以手动修改makemigrations生成的脚本,或者去修改Django本身。

在db/backends/creation.py中找到如下字段:

if f.primary_key:
    field_output.append(style.SQL_KEYWORD('PRIMARY KEY'))elif f.unique:
    field_output.append(style.SQL_KEYWORD('UNIQUE'))

在之后加上:

if(f.default != models.fields.NOT_PROVIDED):
    field_output.append(style.SQL_KEYWORD('DEFAULT ' + str(f.default)))
更多追问追答
追问

我在网上找到了这个说明 ,一是不好使  二是我同事我们的这个文件内容都一样  他的就可以设置default=‘’和blank=true,使数据库中的not NULL 不被勾选  并有默认值空字符串

追答
在shell中执行
>>>from django.db import connection
>>> connection.queries
查看建表时执行的原始SQL是什么。如果没有带DEFAULT属性只能按上述方法修改Django本身生成SQL的逻辑。
或者写一个脚本在执行manager.py migrate以后连接到数据库并执行ALTER TABLE 表名 ALTER 列名 SET DEFAULT 值。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式