我有以下型号:
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 :(得分:0)
您需要传递MapType实例。现在传递整数值MapType.SE(1)。
我认为应该是: newMapType = MapType(mapType = MapType.SE) newMapForm.mapType = newMapType
此外,由于您使用int值作为选择:您还可以将mapType设置为models.IntegerField。我认为无论如何它都适用,因为int很容易转换为字符串,但没有任何意义。
mapType = models.IntegerField(choices = typeChoices)