首页 > 解决方案 > 如何将嵌套字段的初始值更改为零而不是空值。?

问题描述

如何将嵌套字段的初始值更改为零而不是空值。?

在我的情况下,奖品模型是一个OneToOneField模型专辑

串行器

class PrizeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Prize
        fields = ['title', 'amount']

class AlbumSerializer(serializers.ModelSerializer):
    prize = PrizeSerializer(read_only=True)

    class Meta:
        model = Album
        fields = ['album_name', 'artist', 'prize']

有些项目有奖品数据,但有些没有奖品数据。如果没有奖品数据,它将显示为null

>>> serializer.data
{
    "album_name": "The Grey Album",
    "artist": "Danger Mouse",
    "prize": null
}

如何将此值更改为零。?

预期产出

>>> serializer.data
{
    "album_name": "The Grey Album",
    "artist": "Danger Mouse",
    "prize": "0.0"
}

标签: djangopython-3.xdjango-rest-frameworkserialization

解决方案


您可以SerializerMethodField在您的 上使用 a AlbumSerializer,如下所示:

class AlbumSerializer(serializers.ModelSerializer):
    prize = serializers.SerializerMethodField()

    def get_prize(self, instance):
        if hasattr(instance, 'prize'):
            return PrizeSerializer(instance.prize).data
         return "0.0"

    class Meta:
        model = Album
        fields = ['album_name', 'artist', 'prize']

推荐阅读