我正在使用South與Django進行數據庫遷移。Django South遷移不適用於null = True且空白= True
在我models.py
我改變的一個字段從
class User(models.Model):
group = models.ForeignKey(Group)
到
class User(models.Model):
group = models.ForeignKey(Group, null = True, blank = True)
換句話說,我想使group
領域User
可選。
然後,當我試圖運行一個schemamigration,南給了我這個錯誤
(doors)[email protected]:~/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
和blank = True
中指定NULL的默認值嗎?
如果它的事項,這是什麼我現在的表看起來像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
聲明
mysite=# select * from doors_user;
id | group_id | user_type | comment | email | password | first_name | last_name | phone | status | location_id | t_created | t_modified
----+----------+-----------+---------+------------------+----------+------------+-----------+-------+--------+-------------+------------------------------+-------------------------------
1 | 1 | w | | [email protected] | ads | Michael | Anderson | | a | | 2012-03-04 06:44:44.97263-05 | 2012-03-04 06:44:44.972661-05
(1 row)
我通過選擇選項#3繞過了這個問題,但我仍然想知道爲什麼南方抱怨... – hobbes3 2012-03-04 18:39:54
只需對您的代碼發表評論,除逗號之外,在括號內有空格並不好。不是必需的,但它符合Python風格標準,並且更易於閱讀。 – tushar747 2014-01-06 14:15:43
@ tushar747是的,這是舊代碼。我不再那樣寫了。我更新了風格。謝謝! – hobbes3 2014-01-07 01:06:47