Есть модель Book и Category. Они связаны через поле category в модели Book.
При фильтрации с помощью django-filters по полю `categories` выдает все записи. Я делаю что-то не так, но не знаю что.
models.py
from django.db import models
class Category(models.Model):
title = models.TextField()
class Book(models.Model):
title = models.TextField()
isbn = models.TextField(null=True, blank=True)
pagecount = models.IntegerField(null=True, blank=True)
publisheddate = models.TextField(null=True, blank=True)
thumbnailurl = models.TextField(null=True, blank=True)
shortdescription = models.TextField(null=True, blank=True)
longdescription = models.TextField(null=True, blank=True)
status = models.TextField()
authors = models.JSONField()
categories = models.ManyToManyField(
Category,
blank=True
)
views.py
from rest_framework.viewsets import ReadOnlyModelViewSet
from rest_framework.generics import CreateAPIView, ListAPIView
from django_filters.rest_framework import DjangoFilterBackend
from api.models import Book, Category, FeedBack
from api.serializers import BookSerializer, CategorySerializer, FeedBackSerializer
from api.filters import BookFilter
class ListRetrieveBook(ReadOnlyModelViewSet):
"""
Получение всех книг, книг по категории, конкретной книги.
"""
queryset = Book.objects.all()
serializer_class = BookSerializer
filter_backends = (DjangoFilterBackend,)
filterset_fields = ('categories__title',)
В общем, если делаю фильтрацию по id:
filterset_fields = ('categories',)
, то фильтрует норм, а если
filterset_fields = ('categories__title',)
, то просто возвращает все записи.