2015-09-06 43 views
0

我有以下型號:與選擇,如外鍵的Django模型失敗

class MapType (models.Model): 
    SE = 1 
    FE = 2 

    typeChoices = (
     (SE, "Some text"), 
     (FE, "another text") 
    ) 

    mapType = models.CharField(choices=typeChoices,max_length="2") 

此MapType模型作爲在另外一個外鍵:

class MapForm (models.Model): 
    # [...] 
    mapType  = models.ForeignKey(MapType) 

這是視圖,在那裏我「M試圖建立一個新的MapForm條目:

 newMapForm = MapForm() 
     # makes no difference, wether a new maptype object is created or not 
     newMapType = MapType() 

     newMapForm.mapParent = mapEntry 
     newMapForm.mapType = newMapType.SE 
     newMapForm.save() 

這失敗,出現以下錯誤:

Cannot assign "1": "MapForm.mapType" must be a "MapType" instance. 

任何想法,這裏有什麼錯?

+0

是被稱爲'type'或'mapType'的字段嗎? –

+0

啊真的!我用正確的視圖和新的錯誤信息更新了問題。 – Dakkar

+0

您需要創建一個MapType的實例。你創建了一個嗎? – eran

回答

0

您需要傳遞MapType實例。現在您正在傳遞整數值MapType.SE(1)。

我認爲這chould是: newMapType =地圖類型(地圖類型= MapType.SE) newMapForm.mapType = newMapType

而且,由於使用的是INT值,選項:你還不如讓地圖類型爲車型.IntegerField。我認爲它可以工作,因爲int很容易轉換爲字符串,但沒有意義。

mapType = models.IntegerField(choices = typeChoices)