选择为外键的Django模型失败

时间:2015-09-06 14:49:13

标签: django django-models

我有以下型号:

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.

任何想法,这里有什么不对吗?

1 个答案:

答案 0 :(得分:0)

您需要传递MapType实例。现在传递整数值MapType.SE(1)。

我认为应该是: newMapType = MapType(mapType = MapType.SE) newMapForm.mapType = newMapType

此外,由于您使用int值作为选择:您还可以将mapType设置为models.IntegerField。我认为无论如何它都适用,因为int很容易转换为字符串,但没有任何意义。

mapType = models.IntegerField(choices = typeChoices)