Как мне заставить это представление класса фильтра работать, поскольку первые два представления работают?Python

Программы на Python
Anonymous
Как мне заставить это представление класса фильтра работать, поскольку первые два представления работают?

Сообщение Anonymous »

Только начал изучать Джанго. Я не могу заставить работать фильтрацию:
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

Вернуться в «Python»