我正在使用“OrderingFilter”来进行排序。 根据 Django 文档,当未指定“ordering_fields”时,您可以按 View 序列化程序中提到的任何字段进行排序。我有一个字段,它基本上是序列化程序中的一个@property 字段。但是当尝试按该字段排序时,出现以下错误:
Cannot resolve keyword 'spec_identifier' into field. Choices are:....
这是模型 View 的一部分:
class ItemViewSet(BaseViewMixin, MyModelView):
permission_classes = [MyItemViewPermissions]
serializer_class = ItemSerializer
filter_backends = (ItemFilter, OrderingFilter,)
这是我要订购的属性定义:
@property
def spec_identifier(self):
return self.spec.identifier if self.spec else None
是否可以通过它订购?
请您参考如下方法:
因此,经过研究和反复试验,这就是解决方案:
ordering_fields = tuple(serializer_class.Meta.fields + ['spec__identifier'])
