Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python QuerySet自动/方面筛选_Python_Django_Oop_Django Models_Django Admin - Fatal编程技术网

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()