Python 对于django模型上的任何查询,仅对活动集为true的元素执行查询
由于缺乏计划,我发现自己处于这样一种情况:在模型的后期,我不得不引入一个名为“Active”的布尔字段。其思想是,对于数据库上的任何查询,只返回活动为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
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()