Django South迁移不使用null = True和blank = True

时间:2012-03-04 18:20:01

标签: django django-south

我正在使用Django South进行数据库迁移。

在我models.py我改变了

中的一个字段
class User(models.Model):
    group = models.ForeignKey(Group)

class User(models.Model):
    group = models.ForeignKey(Group, null = True, blank = True)

换句话说,我想让group的{​​{1}}字段可选。

然后当我尝试运行schemamigration时,South给了我这个错误

User

为什么南方抱怨?我没有使用(doors)hobbes3@hobbes3:~/Sites/mysite$ python manage.py schemamigration doors --auto ? The field 'User.group' does not have a default specified, yet is NOT NULL. ? Since you are making this field nullable, you MUST specify a default ? value to use for existing rows. Would you like to: ? 1. Quit now, and add a default to the field in models.py ? 2. Specify a one-off value to use for existing columns now ? 3. Disable the backwards migration by raising an exception. ? Please select a choice: null = True指定默认值NULL吗?

如果重要,这就是我目前的blank = True

表格
doors_user

mysite=# \d doors_user Table "public.doors_user" Column | Type | Modifiers -------------+--------------------------+--------------------------------------------------------- id | integer | not null default nextval('doors_user_id_seq'::regclass) group_id | integer | not null user_type | character varying(1) | not null default 't'::character varying comment | text | not null email | character varying(75) | not null password | character varying(135) | not null first_name | character varying(135) | not null last_name | character varying(135) | not null phone | character varying(135) | not null status | character varying(1) | not null default 'p'::character varying location_id | integer | t_created | timestamp with time zone | not null t_modified | timestamp with time zone | not null Indexes: "doors_user_pkey" PRIMARY KEY, btree (id) "doors_user_group_id" btree (group_id) "doors_user_location_id" btree (location_id) Foreign-key constraints: "group_id_refs_id_2fde5e861cc0e5fe" FOREIGN KEY (group_id) REFERENCES doors_group(id) DEFERRABLE INITIALLY DEFERRED "location_id_refs_id_13c85dcc5cba5e23" FOREIGN KEY (location_id) REFERENCES doors_location(id) DEFERRABLE INITIALLY DEFERRED Referenced by: TABLE "doors_property" CONSTRAINT "owner_id_refs_id_7a3a10af3eba8739" FOREIGN KEY (owner_id) REFERENCES doors_user(id) DEFERRABLE INITIALLY DEFERRED TABLE "doors_order" CONSTRAINT "user_action_id_refs_id_79506d7c5228f713" FOREIGN KEY (user_action_id) REFERENCES doors_user(id) DEFERRABLE INITIALLY DEFERRED TABLE "doors_order" CONSTRAINT "user_created_id_refs_id_79506d7c5228f713" FOREIGN KEY (user_created_id) REFERENCES doors_user(id) DEFERRABLE INITIALLY DEFERRED TABLE "doors_log" CONSTRAINT "user_id_refs_id_3ce582a126688737" FOREIGN KEY (user_id) REFERENCES doors_user(id) DEFERRABLE INITIALLY DEFERRED TABLE "doors_ordercomment" CONSTRAINT "user_id_refs_id_6d10d6e79572e14d" FOREIGN KEY (user_id) REFERENCES doors_user(id) DEFERRABLE INITIALLY DEFERRED 声明

SELECT

1 个答案:

答案 0 :(得分:11)

我想......南方正在考虑以防你想要将你的迁移回滚到

class User(models.Model):
    group = models.ForeignKey(Group)

在这种情况下,如果回滚,默认值必须是什么。您选择了#3选项,我相信它会禁用回滚到该迁移的功能,从而以这种方式修复您的问题。