如何根据条件从queryset中删除项,然后在Django中作为json响应返回

2024-10-03 09:19:21 发布

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

我正在使用select_related()执行连接操作,并使用下面的代码过滤记录

class ActiveclientViewSet(viewsets.ModelViewSet):
 queryset = Ruledefinitions.objects.select_related('pmdclinicalruleid').filter(pmdclinicalruleid__effectivedate__lt = timezone.now(),pmdclinicalruleid__retireddate__gt = timezone.now())
 serializer_class = RuledefinitionsSerializer

在上面的代码中,是否可以检查queryset的第一个项的rulename字段值是否为空,如果为空,我需要在json响应中返回剩余的queryset项,如果不为空,则将所有项作为json响应返回


Tags: 代码jsonobjects记录selectnowclassqueryset
1条回答
网友
1楼 · 发布于 2024-10-03 09:19:21

检查第一个元素有什么问题

class ActiveclientViewSet(viewsets.ModelViewSet):
    queryset = Ruledefinitions.objects.select_related('pmdclinicalruleid')
    serializer_class = RuledefinitionsSerializer

    def get_queryset(self):
        now = timezone.now
        queryset = super().get_queryset().filter(
            pmdclinicalruleid__effectivedate__lt=now,
            pmdclinicalruleid__retireddate__gt=now,
        )
        first_item = queryset.first()
    
        if first_item is not None and not first_item.rulename:
            queryset = queryset[1:]

    return queryset

timezone.now()上的筛选器只执行一次:定义类时。因此,对该方法的任何调用都不应该在类定义中,而是在每个请求中调用

在实际实现中,一旦启动服务器,就会调用now。两周后,过滤器仍然在同一日期

相关问题 更多 >