Django:更改序列化程序中字段的表示形式



我有一个字段,它显示平均分数,并取决于另一个模型的字段。我使用SerializerMethodField来获得所需的值。它看起来像这样:

class TitleSerializer(serializers.ModelSerializer):
rating = serializers.SerializerMethodField()
class Meta:
fields = '__all__'
model = Titles
def get_rating(self, obj):
rating = obj.reviews.all().aggregate(Avg('score'))
return rating

它有效,但没有以我需要的方式返回。现在我得到的数据看起来像:

"rating" : {
"score__avg" : some_value
}

如何将其更改为:

"rating" : some_value

提前谢谢。

您为聚合表达式命名,因此使用名为的参数:

def get_rating(self, obj):
# returns {'rating': … }
return obj.reviews.aggregate(rating=Avg('score'))

或者你可以从字典中打开它:

def get_rating(self, obj):
# returns … (value)
return obj.reviews.aggregate(Avg('score'))['score__avg']

相关内容

最新更新