Python QuerySet自动/方面筛选
我有一个模型,它有一个Python QuerySet自动/方面筛选,python,django,oop,django-models,django-admin,Python,Django,Oop,Django Models,Django Admin,我有一个模型,它有一个活动的字段,我想根据这个字段过滤掉所有不活动的记录。比如说: Record(Model): active = BooleanField() ... 要过滤掉它们,我可以执行以下操作: Record.objects(active=True) 但这是一个普遍的情况,我希望非活动记录几乎在任何时候都被过滤掉。遵循DRY原则的最佳方法是什么?不要像上面的示例那样手动筛选每个请求,同时保持在管理面板中管理非活动记录的能力。您可以使用以下方法来完成此任务: # Fi
活动的
字段,我想根据这个字段过滤掉所有不活动的记录。比如说:
Record(Model):
active = BooleanField()
...
要过滤掉它们,我可以执行以下操作:
Record.objects(active=True)
但这是一个普遍的情况,我希望非活动记录几乎在任何时候都被过滤掉。遵循DRY原则的最佳方法是什么?不要像上面的示例那样手动筛选每个请求,同时保持在管理面板中管理非活动记录的能力。您可以使用以下方法来完成此任务:
# First, define the Manager subclass.
class ActiveManager(models.Manager):
def get_query_set(self):
return super(ActiveManager, self).get_query_set().filter(active=True)
# Then hook it into the Record model explicitly.
class Record(models.Model):
active = BooleanField()
objects = models.Manager() # The default manager.
active_objects = ActiveManager() # The specific manager.
#to filter for all active records you can do:
Record.active_objects.all()