1
qq976739120 2017-12-14 11:07:25 +08:00
不是很懂你的具体需求,新添加一条记录的时候,你不赋值,就默认一个 1,表里设置默认值什么意思
|
2
robinlovemaggie 2017-12-14 11:11:51 +08:00 1
貌似走 model 是不行,要手动执行 raw sql。详见: https://stackoverflow.com/questions/31986507/django-default-value-in-database-not-just-orm
|
3
yearliny 2017-12-14 11:48:59 +08:00 via Android
观点同一楼,你一个空表,数据没有,怎么可能有默认值。当你创建一个数据,不给这个数值赋值,自然会出现 1 了。
你这种想法,就和腾讯给没有未注册 QQ 号的 QQ 号已经填充好了个人资料一样,其他数据已经就位,就差被人注册了。而腾讯即使有设定的默认值,也只有一个人创建了 QQ 号时才能一起被设定到一条数据中。 |
4
chengxiao 2017-12-14 13:04:14 +08:00
是要给老的数据为空的数据增加一个默认值么?
'''python b = test.objects.all() for x in b: x.State = default ''' |
5
chengxiao 2017-12-14 13:04:57 +08:00
是要给老的数据为空的数据增加一个默认值么?
''' b = test.objects.all() for x in b: x.State = default x.save() ''' |
6
vZexc0m 2017-12-14 13:21:27 +08:00
好像数据库并不能设置默认值
|
7
Hstar 2017-12-14 13:26:56 +08:00
因为不是所有数据库的所有字段都支持设置默认值,所以在 django-orm 里 default 是由逻辑实现的。
一定要设,就是自己改生成的 migration 文件,用 sql 语句添加 default,然后你还要考虑是否会产生逻辑冲突。 |
8
ifoolish 2017-12-14 15:23:28 +08:00
你如果真的要让 Django 建表的时候给字段加上默认值,只能修改 Django 建表的代码,文件大概是在 site-packages/django/db/backends/creation.py ,参考 https://stackoverflow.com/questions/6153482/django-models-default-value-for-column
|
9
siteshen 2017-12-14 21:13:01 +08:00
歪楼 SQLAlchemy
所以说 SQLAlchemy 比 Django 的 ORM 强大是有根据的,想用哪个用哪个。 http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Column.params.default http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Column.params.server_default |
10
dhq 2017-12-16 09:10:49 +08:00 via iPhone
是不是说你在查看表结构的时候,default,没有你表里设置的那个值
|
12
dhq 2017-12-17 11:07:16 +08:00
这个是它特性,这个默认值不是写在表结构里,而是说你在使用 model 实例化一个对象保存的时候,djadjango 自己帮你设置一个这样的值,达到可以设置默认值的效果
|