Django-filter не фильтрует
У меня есть модель проекта, которая связана с manytomany с пользователем. Изначально я создаю кверисет, который включает все проекты вошедшего пользователя. Кверисет содержит два проекта, один из которых author = False. После я фильтрую его как /project/list/?Shared=True, но это не работает. После фильтрации должен был остаться только один проект, но все равно возвращается два, я не могу понять, с чем это связано
модель
class Project(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
members = models.ManyToManyField(User, through="UserProject", related_name="project")
class UserProject(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
author = models.BooleanField(default=False)
api
class ListProjectApi(ListApi):
serializer_class = ProjectSerializer
lookup_field = "id"
queryset = Project.objects.all()
filter_backends = (DjangoFilterBackend,)
filterset_class = ProjectFilter
def get_queryset(self):
user = self.request.user
projects = user.project.all()
return projects
фильтр
class ProjectFilter(rest_framework.FilterSet):
author = rest_framework.BooleanFilter(field_name="author", method="filter_author")
shared = rest_framework.BooleanFilter(field_name="shared", method="filter_shared")
class Meta:
model = Project
filter_fields = ["author", "shared"]
def filter_author(self, queryset, name, value):
if name == "author" and value is True:
logger.info(queryset)
projects = queryset.filter(userproject__author=True)
logger.info(projects)
return projects
logs
2021-12-24 17:54:59,927 ruchnoi INFO <QuerySet [<Project: test>, <Project: author>]> None
2021-12-24 17:54:59,932 ruchnoi INFO <QuerySet [<Project: test>, <Project: author>]> None