Построить фильтр, используя Django RestFramework и Angular - PullRequest
0 голосов
/ 28 октября 2019

я пытаюсь создать фильтр для моего внешнего Angular из бэкэнда Django, или как я могу построить фильтр, используя restframework_filter, пожалуйста, помогите людям, у меня это есть в бэкэнде

viewset.py

from snippets.models import Snippet
from .serializers import SnippetSerializer
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from django_filters  import rest_framework as filters


class SnippetFilter(filters.FilterSet):

    class Meta:
        model = Snippet
        fields = {
            'title': ['icontains'],
            'created': ['iexact', 'lte', 'gte'],
        }


class SnippetViewSet(viewsets.ModelViewSet):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
    filterset_class = SnippetFilter

    @action(methods=['get'], detail=False)
    def newest(self, request):
        newest = self.get_queryset().order_by('created').last()
        serializer = self.get_serializer_class()(newest)
        return Response(serializer.data)

1 Ответ

0 голосов
/ 28 октября 2019

Я создаю свои фильтры явно. Например, следующий код создаст конечные точки snippets/?snippet_field_lte=<number> и snippets/?another_field=<number>.

class SnippetFilter(filters.FilterSet):
    snippet_field_lte = NumberFilter(name="snippet_field", lookup_expr="lte")
    another_field = NumberFilter(name="another_field", lookup_expr="exact")

    class Meta:
        model = Snippet
        fields = ["snippet_field_lte", ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...