我用inspectdb从现有的mysql数据库创建了django rest模型。我有两个模型,我想访问其他模型的一些数据。
我的模型:
class Impreza(models.Model):
year = models.IntegerField()
tytul = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = '2006_impreza'
class Description(models.Model):
year = models.IntegerField()
year_id = models.IntegerField()
id_imprezy = models.IntegerField(blank=True, primary_key=True)
class Meta:
managed = False
db_table = '2006_description'
我的序列化程序:
class ImprezaSerializer(serializers.ModelSerializer):
desc = serializers.StringRelatedField(many=True)
class Meta:
model = Impreza
fields = ('year', 'tytul', 'desc')
我的问题是,django正在搜索名为'impreza\u id'的id,但它与其他名称一起存在-'id\u imprezy'。如您所见,我试图给'id\u imperzy'一个'primary\u key=true'来告诉django这是正确的名称,但它不起作用。它仍然给我错误:(1054,“字段列表”中的未知列“2006\u description.impreza\u id”)。
在我的数据库中,两个表都有id,但它没有显示在模型中。我听说django在模型中没有显示id列。
我怎么才能做对呢?如何添加外键?抱歉,但我对django真的很陌生;-)
1条答案
按热度按时间ylamdve61#
在序列化程序中,您正在引用
model = Impreza
:你指的是
Impreza
类,它实际上有字段'year'
以及'tytul'
. 这个Impreza
类还包含一个名为impreza_id
. 因为序列化程序正在Impreza
,而不是Description
,django被选中,告诉你它找不到impreza_id
.不过,更改引用的类并不能解决问题。如果你想拥有一对多的关系,你可以使用
ForeignKey
.所有这些,我都会考虑一个完全不同的架构。您正在构建一个非常特定的类,它可以很好地模块化和可重用。考虑一下这样做:
一对多关系的可靠用例:
在这种情况下,您可以让一个车主拥有多辆车。
干杯!