【问题标题】:How to change the initial value of a nested field to zero instead of null value.?如何将嵌套字段的初始值更改为零而不是空值。?
【发布时间】:2019-10-24 13:26:29
【问题描述】:

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

在我的例子中,Prize 模型是 OneToOneField 来模拟 Album

序列化器

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
}

如何将此 null 值更改为零。?

预期输出

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

【问题讨论】:

    标签: django python-3.x django-rest-framework serialization


    【解决方案1】:

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

    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']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 2022-06-13
      • 1970-01-01
      • 2021-02-05
      • 2021-06-17
      相关资源
      最近更新 更多