如何从同一模型序列化外键

时间:2018-05-22 10:08:22

标签: python django django-rest-framework

我有这个型号:

class Player(models.Model):
    name = models.CharField(max_length=100)
    partner = models.ForeignKey('self', blank=True, null=True)

在我的序列化器中,我有这个:

class PlayerSerializer(serializers.ModelSerializer):
    partner = PlayerSerializer()
    class Meta:
        model = Player
        fields = ('id', 'name', 'partner')

但当然这会返回错误,指出 PlayerSerializer 未定义。

如何序列化外键。

我正在使用Django和REST API。 Django 1.10和python 3.6.3

2 个答案:

答案 0 :(得分:2)

请尝试使用depth选项:

class PlayerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Player
        fields = ('id', 'name', 'partner')
        depth = 1

答案 1 :(得分:1)

只需在Meta中添加depth = 1,如下所示

class PlayerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Player
        fields = ('id', 'name', 'partner')
        depth = 1