2012-12-15 57 views
0

我在Django模型的外鍵字段中將默認值設置爲0。但它是提高IntigrityError(1048,「列COUNTRY_ID「不能爲空」)在外鍵字段中引起錯誤的默認值爲0

嗨,我有這樣的代碼:

class TestModel(models): 
    name = models.CharField(max_length=255, blank=True) 
    reg_from = models.CharField(max_length=255, blank=True) 
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES, blank=True, null=True) 
    country = models.ForeignKey(Country, blank=True, default=0) 

出於某種原因,同時節省TestModel,我不能提供國家信息。我想稍後再更新。

Krish

+0

你的國家模式是什麼樣的,即什麼樣的價值觀? – Talvalin

+3

它正在尋找一個主鍵爲0的國家。您應該有'country = models.ForeignKey(Country,blank = True,null = True)' – karthikr

+0

我沒有空值,因爲空值會導致數據庫變慢。所以沒有國家適用的每一行,我想有0 – Elisa

回答

0

我把field作爲快速和骯髒的解決方案。

-1

更改您的定義:

country = models.ForeignKey(Country, blank=True, null=True, default=0) 

null=True屬性將設置在DB的country列NULL參數,不,你應該設置此列的值。

另外default=0沒有必要,因爲默認值將爲空。

+0

我沒有空值,因爲空值使數據庫變慢。所以每一行都沒有國家適用,我想有0 – Elisa

+0

什麼?空使你的數據庫變慢? :-)確定,設置'null = True'和'default = 0',默認情況下你的數據庫將'country'設置爲'0'。 – MostafaR

0

試試None而不是0. 0是一個整數,它不應該工作。

+1

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 –

+0

這是一個問題形式的建議。 –

1

它引發錯誤,因爲您的國家/地區模型中沒有包含PK = 0的對象。

如果您不想將字段設置爲null,那麼只需創建一個pk=0如下的國家對象:Country.objects.create(name='No Country', pk=0)

雖然,將字段設置爲null並且具有default=0可能是一個更乾淨的解決方案。