我在客户端序列化程序中创建了一个自定义字段。该字段的值由复杂的序列化器方法计算。
class ClientsStatsSerializer(serializers.ModelSerializer):
"""
Serializer shows total_spend for 2019 by client.
"""
refs_count = serializers.SerializerMethodField()
total_spend_2019 = serializers.SerializerMethodField()
class Meta:
model = Company
ordering = ('total_spend_2019',)
fields = [
'id',
'legal_name',
'refs_count',
'total_spend_2019',
]
def get_total_spend_2019(self, obj):
...
Run Code Online (Sandbox Code Playgroud)
我想让输出按 的值排序total_spend_2019。看起来我不能在这里做一个简单的ordering = ('total_spend_2019',)我不能在模型中做,也不能在视图中做。
编辑:拥有一个适用于任何 SerializerMethodField 的通用解决方案会很棒。
目前的观点是这样的:
class ClientsStatsViewSet(viewsets.ViewSet):
def list(self, request):
queryset = request.user.company.clients.all()
client_id = self.request.query_params.get('client_id', None)
if client_id is not None:
queryset = queryset.filter(pk=client_id)
serializer = ClientsStatsSerializer(queryset, many=True)
return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
非常感谢!!