python django models创建mysql数据库表default、blank属性失效 5
django创建表设置default、blank属性没有效果求大神赐教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...
django 创建表设置default、blank属性没有效果 求大神赐教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
展开
1个回答
展开全部
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)))
更多追问追答
追答
在shell中执行
>>>from django.db import connection
>>> connection.queries
查看建表时执行的原始SQL是什么。如果没有带DEFAULT属性只能按上述方法修改Django本身生成SQL的逻辑。
或者写一个脚本在执行manager.py migrate以后连接到数据库并执行ALTER TABLE 表名 ALTER 列名 SET DEFAULT 值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询