模型:
class Book(models.Model):
title = models.CharField(max_length=32,verbose_name="书籍名称")
price = models.IntegerField(verbose_name="价格")
pub_date = models.DateField(verbose_name="出版日期")
bread = models.IntegerField(verbose_name="阅读量")
bcomment = models.IntegerField(verbose_name="评论量")
publish = models.ForeignKey("Publish",on_delete=models.CASCADE,verbose_name="出版社")
authors = models.ManyToManyField("Author",verbose_name="作者")
def __str__(self):
return self.title
实现:
from rest_framework.generics import GenericAPIView,ListCreateAPIView,RetrieveUpdateDestroyAPIView
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
class BookView(ModelViewSet):
# class BookView(ListCreateAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializer
class BookSearchView(ListCreateAPIView):
queryset = Book.objects
serializer_class = BookSerializer
filter_backends = [DjangoFilterBackend]
filter_fields = ['title']
settings.py
INSTALLED_APPS = [
'rest_framework',
'django_filters',
]
views.py
from django_filters import rest_framework as filters
class CourseListView(ListAPIView):
queryset = models.Course.objects.filter(is_show=True, is_deleted=False)
serializer_class = CourseModelSeralizer
filter_backends = (filters.DjangoFilterBackend,)
filterset_fields = ('course_category',)
新版改了字段名称
可以看一下官方文档
https://django-filter.readthedocs.io/en/main/guide/rest_framework.html