2015-09-06 6 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) 

Это мнение, где я пытаюсь создать новую запись 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

ah true! i Обновлен вопрос с правильным представлением и новым сообщением об ошибке. – Dakkar

+0

вам нужно создать экземпляр MapType. Вы создали его? – eran

ответ

0

Вам необходимо передать экземпляр MapType. Теперь вы передаете целочисленное значение MapType.SE (1).

Я думаю, что это chould быть: newMapType = MapType (MapType = MapType.SE) newMapForm.mapType = newMapType

Кроме того, так как вы используете Int значения, всячески манипулировать: Вы могли бы также сделать MapType в модели .IntegerField. Я думаю, что это все равно, потому что int легко преобразовывается в строку, но в этом нет никакого смысла.

MapType = models.IntegerField (по выбору = typeChoices)

Смежные вопросы