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

发布于 2021-01-29 17:45:21

我在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”情况,我可以在过滤器查询中直接进行比较,但是对于更复杂的情况,这可能是不可能的。我应该如何基于自定义函数进行查询?

关注者
0
被浏览
139
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    nserv = service.objects.are_active()

    这将通过以下方式实现:

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

    查看自定义经理



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看