由于缺乏计划,我发现自己处于这样一种情况:我必须在模型的后期阶段引入一个名为“Active”的布尔字段。想法是仅返回对Db上的任何查询都有效的元素。一种可能的方法是在模型上编辑我的所有查询以添加类似
的内容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']
答案 0 :(得分:1)
您可以实施自定义默认对象管理器并根据您的条件过滤掉。
请参阅Custom managers,但请记住此Do not filter away any results in this type of manager subclass,因为django会警告覆盖默认对象管理器。
答案 1 :(得分:0)
我认为你可以为你的模型添加新的QuerySet方法snippet。
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()