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

推荐答案

I would suggest you to use a custom manager for your class, like this you could use :

nserv = service.objects.are_active()

This would be achieved with something like:

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

custom managers

Django相关问答推荐

如何在Django上创建ManyToMany管理面板?

Django modelform在包含在另一个模板中时不呈现

我的Django终结点不访问HAS_OBJECT_PERMISSION方法

如何自动删除 Django 模型中的字段值?

AttributeError:模块rest_framework.serializers在 Swagger 中的 Django 中没有属性NullBooleanField

基于模型多选字段在模板django中显示结果

如何在 ModelViewSet 逻辑中读取查询字符串值?

使用 Vagrant 进行端口转发时连接重置

在 Django 的 TextField 中禁用 HTML 转义

模板过滤器修剪任何前导leading或尾随trailing空格

如何在 Django ORM 中执行 GROUP BY ... COUNT 或 SUM?

测试 Django ModelForm 是否有实例

在 django 中获取本地时区

Django:获取上次用户访问日期

django.core.exceptions.ImproperlyConfigured:请求设置 USE_I18N,但未配置设置

Django/Python初学者:执行python manage.py syncdb时出错-找不到psycopg2

AWS Cognito 作为网站的 Django 身份验证后端

在 django 中获取空查询集的类名

如何更改模型标签并给它一个自定义名称

提供来自 django 的压缩内容