2013-05-01 52 views
0

我有以下Model外鍵總是被設置爲空數據庫

class Message(models.Model): 
    parent = models.ForeignKey('self', related_name='parent_msg', null=True) 
    (...) 

而且我下面創建一個新的消息:

(...) 
parent_msg = Message.objects.get(id = message_id) 
m = Message(..., parent = parent_msg) 
m.save() 

parent_id場總是被在數據庫上設置爲NULL

該文檔顯示「如果爲True,Django將在數據庫中將空值存儲爲NULL」,但我知道parent_msg不是空的,所以我做錯了什麼?

+0

嘗試向'ForeignKey'參數添加'blank = True'。以防萬一,你確定所有的模式遷移都被觸發了嗎?另外,你確定你在初始化之後不忘記保存對象嗎?您也可以嘗試將父項設置爲屬性(不在構造函數中: 'm.parent = parent_msg; m.save()' – 2013-05-01 21:49:52

+0

我已經嘗試添加'blank = True,default = None',並且運行'syncdb',我也做'm.save()'。仍然沒有成功 – AntonioJunior 2013-05-01 22:53:55

回答

0

問題不在於模型定義。但帶有插入代碼。 你可以請發佈完整的代碼,以便它可以驗證。你使用的是什麼版本的Django。

+0

問題在於代碼的不同部分,當我按照你的建議保存'parent_msg'時,它會起作用。你可以回滾你的最後一次編輯,讓人們知道正確的方法嗎? – AntonioJunior 2013-05-02 00:35:48

+0

如果錯誤出現在代碼的其他部分,那麼問題中的代碼將毫無問題地工作。提供的是不需要的。 – 2013-05-02 00:37:46