在另一个序列化程序中调用了外键

时间:2018-06-23 02:36:44

标签: python django django-rest-framework

我正在看django rest框架中的serialzier部分。我在示例中看到了以下模型

class Album(models.Model):
    album_name = models.CharField(max_length=100)
    artist = models.CharField(max_length=100)

class Track(models.Model):
    album = models.ForeignKey(Album, related_name='tracks', on_delete=models.CASCADE)
    order = models.IntegerField()
    title = models.CharField(max_length=100)
    duration = models.IntegerField()

在这里您看到相册是Track模型中的外键,当我们进行序列化时,我们正在相册序列化器中使用此外键。

class AlbumSerializer(serializers.ModelSerializer):
    tracks = serializers.StringRelatedField(many=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')

有人可以解释一下在Tracks中调用专辑外键与在专辑中使用专辑外键的区别吗?

2 个答案:

答案 0 :(得分:0)

如果您未在AlbumSerializer中声明轨道字段,则序列化的结果是外部Kys列表。但在这种情况下,导致跟踪的是在跟踪的所有字段中显示的json对象的列表

答案 1 :(得分:0)

专辑是您所获得的查询信息,并且您试图从跟踪表中检索属于该专辑的行以包含在响应中。

{'album_name': 'Revolver',
'artist': 'The Beatles'
'tracks': ['Taxman', 'Eleanor Rigby'...]}