2009-11-28 85 views
22

我有這個模型允許外鍵給用戶空值。 Django的

class Vacancy(models.Model): 
    user = models.ForeignKey(User, null=True, blank=True, default = None) 
    name = models.CharField(max_length=64) 

當管理員我試圖創造一個空缺沒有用戶。它會拋出一個錯誤「club_vacancy.user_id可能不是NULL」。 我做錯什麼了嗎?

回答

33

club_vacancy.user_id may not be NULL

看起來非常像從數據庫中的錯誤,而不是從Django的。

它似乎最有可能你運行manage.py syncdb後添加null=True。您需要修改數據庫模式以允許該列中的空值。

+2

嗯,我跑前執行syncdb後,我加入空=真。我應該如何修改我的分貝? – barin 2009-11-28 20:09:29

+5

執行syncdb不修改已經存在的表。刪除表並再次運行syncdb,或手動修改數據庫,或使用遷移應用程序。 – 2009-11-28 20:52:25

+6

遷移應用程式,例如「南」 – panchicore 2009-11-28 21:47:42

-5

你需要重置你的數據庫表(因爲只是執行syncdb不更新被alredy與空創建的字段= FALSE)

./manage.py重置your_app

或有一些數據你不想鬆散地使用SQL命令來刪除NOT NULL標誌

2

除了南方以外,另一種選擇是使用django進行模式更改。

http://code.google.com/p/django-evolution/

進行dB變化之前安裝它。然後運行

python manage.py evolve --hint --execute 

確保如果添加了一個新的領域,你允許空值(null=True),或者演變會給你一個錯誤消息。

+0

如果我不想讓新字段爲空,該怎麼辦?我該怎麼辦? – barin 2009-11-30 20:43:40

+0

較新的Django版本有內置的遷移。 – Flimm 2016-06-21 13:19:52