gpt4 book ai didi

python - 来自序列化程序的自定义字段的 Django Rest Order?

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:58 24 4
gpt4 key购买 nike

我正在尝试使用 Django Rest 根据自定义字段的排序返回模型的 json 表示,该自定义字段未附加到模型,但附加到序列化程序。我知道如何使用特定于模型的字段来执行此操作,但是当字段仅在序列化程序类中时,您如何使用 django rest 返回排序?我想返回按“分数”排序的图片列表。谢谢!

------Views.py

class PicList(generics.ListAPIView):
queryset = Pic.objects.all()
serializer_class = PicSerializerBasic
filter_backends = (filters.OrderingFilter,)
ordering = ('score')

------序列化器.py

class PicSerializer(serializers.ModelSerializer):
userprofile = serializers.StringRelatedField()
score = serializers.SerializerMethodField()

class Meta:
model = Pic
fields = ('title', 'description', 'image', 'userprofile', 'score')
order_by = (('title',))

def get_score(self, obj):
return Rating.objects.filter(picc=obj).aggregate(Avg('score'))['score__avg']

最佳答案

您可以将方法 get_score 的逻辑移至 Pic 类 的管理器。 In this answer有一个如何做到这一点的例子。

一旦你在管理器中拥有它,score 字段将“神奇地”适用于所有 class Pic 的每个对象(序列化器、 View ...)您将能够使用它进行订购。

关于python - 来自序列化程序的自定义字段的 Django Rest Order?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27637828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com