我有一个ReactJS表,它使用fetch API使用Rest从Django服务器获取数据。我已经定义了视图集以使用OrderingFilter并将ordering_fields指定为:
class RecipientViewSet(BaseViewSetClass):
permission_classes = (IsAuthenticated,)
serializer_class = serializers.RecipientsSerializer
filter_backends = (filters.OrderingFilter,)
ordering_fields = (
'id',
'externalID',
'firstname',
'lastname',
)
它工作得很好,但我想知道是否有一种从服务器获取来自orders_fields的方法,因此我只能为可用于设置的表头添加排序图标数据的排序。
我应该在Django REST Framework GUI中添加,我可以点击" Filters"按钮并查看此视图集的所有可能过滤器,这正是我想用ReactJS获得的。
感谢您的帮助!
答案 0 :(得分:1)
我认为没有办法通过API调用获得开箱即用的排序字段,但您始终可以添加端点以返回它们:
from rest_framework import viewsets
from rest_framework.decorators import list_route
class MyViewSet(viewsets.GenericViewSet):
ordering_fields = ('a', 'b')
@list_route
def get_ordering_fields(self, request):
return self.ordering_fields
这样调用/your_endpoint/get_ordering_fields/
将返回类中定义的排序字段列表。如果愿意,您可以在返回之前应用任何格式。
另请注意,此行为可以在base或mixin类中实现,以便以后可以轻松重用。