注释字段上的djangfilter筛选器

2024-10-03 15:27:30 发布

您现在位置:Python中文网/ 问答频道 /正文

class EventViewSet(viewsets.ModelViewSet):
    queryset = Event.objects.all()
    serializer_class = EventSerializer

    def get_queryset(self):
        return super().get_queryset().annotate(
            is_active=ExpressionWrapper(
                Q(start_date__lt=timezone.now()) & Q(end_date__gt=timezone.now()),
                output_field=BooleanField()
            ),
        )

    search_fields = [
        'name',
        'short_desc',
        'desc',
    ]

    filterset_fields = [
        'is_active',
    ]

我有一个视图集,我想在一个带注释的字段上进行过滤,通常您只需在django querysets中过滤注释,但是上面的内容与此序列化程序结合在一起:

^{pr2}$

我还没有深入研究源代码,但我认为它可以做一个简单的qs.过滤器对于filterset_fields中的字段,但是我得到了一个美丽的错误,它无法解释太多(至少对我来说):

'Meta.fields' contains fields that are not defined on this FilterSet: is_active


Tags: eventfieldsgetdateisnowdescclass