Python 对于django模型上的任何查询,仅对活动集为true的元素执行查询

Python 对于django模型上的任何查询,仅对活动集为true的元素执行查询,python,django,Python,Django,由于缺乏计划,我发现自己处于这样一种情况:在模型的后期,我不得不引入一个名为“Active”的布尔字段。其思想是,对于数据库上的任何查询,只返回活动为true的元素。一种可能的方法是编辑我对模型的所有查询,添加如下内容 Q(active==true) 这需要很多改变。是否可以使用“class meta”设置顺序,以便对Db的任何查询只在活动集为true的元素上执行 class Db(models.Model): url = models.TextField() descriptio

由于缺乏计划,我发现自己处于这样一种情况:在模型的后期,我不得不引入一个名为“Active”的布尔字段。其思想是,对于数据库上的任何查询,只返回活动为true的元素。一种可能的方法是编辑我对模型的所有查询,添加如下内容

Q(active==true)
这需要很多改变。是否可以使用“class meta”设置顺序,以便对Db的任何查询只在活动集为true的元素上执行

class Db(models.Model):
   url = models.TextField()
   description = models.TextField(blank=True, null=True)
   active = models.BooleanField()(initial=True)

   class Meta:
       ordering = ['-id']

您可以实现自定义默认对象管理器,并根据您的条件进行筛选


但是请记住,django警告您要覆盖默认对象管理器。

我认为您可以像这样为模型添加新的QuerySet方法

from django.db import models

class QuerySetManager(models.Manager):
    def get_query_set(self):
        return self.model.QuerySet(self.model)



# Using it in a model:

from django.db.models.query import QuerySet    

class Entry(models.Model):
   ...
   objects = QuerySetManager()
   ...
   class QuerySet(QuerySet):
        def chckactive(self):            
            return self.filter(active=True)


#   Entry.objects.all().chckactive()