从过滤器中的视图更改查询集

问题描述 投票:0回答:1

我希望具有默认行为,其中视图中的queryset返回publish_at日期小于某个日期的记录。我还希望具有布尔DRF过滤器,如果将其设置为true,则无论publish_at日期是什么,它都会返回所有记录。

views.py:

    queryset = ProjectNews.objects.exclude(publish_at__gte=timezone.now())

filters.py:

    from django_filters import rest_framework as filters
    class ProjectNewsFilterSet(filters.FilterSet):
        not_published = filters.BooleanFilter(
                            method='show_not_published_news'
                        )
        def show_not_published(self, queryset, name, value):
            if value:
                # queryset based on queryset from view
                # does not return all the records
                return queryset.all() 
            return queryset.exclude(publish_at__gte=timezone.now())
django django-rest-framework django-filter drf-queryset
1个回答
0
投票

只需将queryset更改为:

queryset = ProjectNews.objects.all()

比您在过滤器中过滤查询集。

© www.soinside.com 2019 - 2024. All rights reserved.