获得可订购的领域 - Django Rest

时间:2018-01-21 08:42:46

标签: reactjs django-rest-framework

我有一个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获得的。

感谢您的帮助!

1 个答案:

答案 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类中实现,以便以后可以轻松重用。

请参阅docs about list and detail routes