Django Rest。按计算模型字段排序

时间:2018-10-15 09:26:11

标签: django sorting django-rest-framework

我坚持在计算字段上订购。

假设我的模型如下:

class Foo(models.Model):
    fieldA = models.CharField()
    fieldB = models.CharField()

    @property
    def calculatedField(self):
        return someFunc(fieldA)

现在,我ViewSet不能对calculatedField进行订购,因此我在其中有以下代码:

class SomeViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
    ...
    ordering_fields = ('calculatedField',)
    ...

但是当我尝试使用类似查询参数的订单

Method GET /someEndpoint/?ordering=calculatedField

我收到以下错误

Cannot resolve keyword 'calculatedField' into the field. Choices are: ...

有没有一种方法可以应用于对计算字段的定单?谢谢

1 个答案:

答案 0 :(得分:1)

您必须注释额外的字段

class SomeViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
...
ordering_fields = ('calculatedField',)

def get_queryset(self):
   return self.queryset.annotate(other function)