Django 嵌套序列化程序问题:字段名称对模型无效

Django Nested Serializer Issue: Field name is not valid for model

我正在尝试设置以下输出:

{
    season: 1,
    player_profile: {
        name: John Doe,
    }
}

模型设置如下:

class PlayerProfile(models.Model):
    name = models.CharField(max_length=120, null=True)

class TeamAffinityReward(models.Model):
    player_profile = models.OneToOneField(
        PlayerProfile,
        on_delete=models.CASCADE,
        #db_constraint=False
        null=True)
    season = models.IntegerField(null=True, blank=True)

序列化程序是这样设置的:

class PlayerProfileForNestingSerializer(serializers.ModelSerializer):
    class Meta:
        model = PlayerProfile
        fields = (
            'name',
        )


class TeamAffinityRewardSerializer(serializers.ModelSerializer):
    class Meta:
        model = TeamAffinityReward
        playerprofile = PlayerProfileForNestingSerializer()
        fields = (
            'playerprofile',
            'season',
        )

但是,我收到以下错误:Field name `playerprofile` is not valid for model `TeamAffinityReward`.

如果我将 playerprofile 更改为 player_profile,错误就会消失,但它会显示 player_profile_ID 而不是 PlayerProfileForNestingSerializer。

您正在 Meta 中定义 player_profile 字段,您应该将其声明为 class 变量:

class TeamAffinityRewardSerializer(serializers.ModelSerializer):
    player_profile = PlayerProfileForNestingSerializer()

    class Meta:
        model = TeamAffinityReward
        fields = (
            'player_profile',
            'season',
        )