在序列化程序自定义字段中订购

时间:2020-06-15 17:19:47

标签: python django django-models django-rest-framework django-views

序列化器中的我的变量 MySerializer。

du = serializers.SerializerMethodField()

def get_du(self, obj):

   modelname = Somemodel.objects.filter('id=id')
   du = sum(modelname.values_list('t', flat=True))
   return du

我想按du的值以降序返回响应。 我的看法:

    def get(self, request):
        queryset = Anothermodel.objects.all()
        serializer = MySerializer(queryset, many=True)
        return Response({"organization": serializer.data}, status=status.HTTP_200_OK)

2 个答案:

答案 0 :(得分:1)

设法通过帮助How to sort values of serializer custom field in DRF

解决了该问题
serializer_data = sorted(serializer.data, key=lambda k: k['du'], reverse=True)
        return Response({"info": serializer_data}, status=status.HTTP_200_OK)

答案 1 :(得分:0)

您是否尝试过使用.order_by()?像这样:

AnotherModel.objects.all().order_by('-du')

https://docs.djangoproject.com/en/3.0/ref/models/querysets/