Только начал изучать Джанго. Я не могу заставить работать фильтрацию:
views.py:
class BlogPostList(APIView):
def get(self, request, format=None):
title = request.query_params.get("title", "")
if title:
blog_posts = BlogPost.objects.filter(title_icontains=title)
else:
blog_posts = BlogPost.objects.all()
serializer = BlogPostSerializer(blog_posts, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
urls.py:
urlpatterns = [
path("blogposts/", views.BlogPostListCreate.as_view(), name="Blogpost-view-create"),
path("blogposts//", views.BlogPostRetrieveUpdateDestroy.as_view(), name="update"),
path("blogposts/", views.BlogPostList.as_view(), name="Filter"),
]
первые два представления работают.
models.py:
from django.db import models
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
вот полный код view.py:
from django.shortcuts import render
from rest_framework import generics, status
from rest_framework.response import Response
from .models import BlogPost
from .serializers import BlogPostSerializer
from rest_framework.views import APIView
# Create your views here.
class BlogPostListCreate(generics.ListCreateAPIView):
queryset = BlogPost.objects.all()
serializer_class = BlogPostSerializer
def delete(self, request, *args, **kwargs):
BlogPost.objects.all().delete()
return Response(status=status.HTTP_204_NO_CONTENT)
class BlogPostRetrieveUpdateDestroy(generics.RetrieveUpdateDestroyAPIView):
queryset = BlogPost.objects.all()
serializer_class = BlogPostSerializer
lookup_field = "pk"
class BlogPostList(APIView):
def get(self, request, format=None):
title = request.query_params.get("title", "")
if title:
blog_posts = BlogPost.objects.filter(title_icontains=title)
else:
blog_posts = BlogPost.objects.all()
serializer = BlogPostSerializer(blog_posts, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
Подробнее здесь: https://stackoverflow.com/questions/783 ... re-working