小编典典

Django:根据自定义函数过滤查询

python

我在Django模型类中内置了一个函数,我想使用该函数过滤查询结果。

  class service:
       ......
       def is_active(self):
            if datetime.now() > self.end_time:
                  return False
            return True

现在,我想在查询过滤器中使用此功能,例如

nserv = service.objects.filter(is_active=True)

我知道,对于这种简单的“
is_active”情况,我可以在过滤器查询中直接进行比较,但是对于更复杂的情况,这可能是不可能的。我应该如何基于自定义函数进行查询?


阅读 129

收藏
2020-12-20

共1个答案

小编典典

我建议您为类使用自定义管理器,您可以这样使用:

nserv = service.objects.are_active()

这将通过以下方式实现:

class ServiceManager(models.Manager):
    def are_active(self):
        # use your method to filter results
        return you_custom_queryset

查看自定义经理

2020-12-20