我有一个具有active
字段的模型,我想根据此字段过滤掉所有不活动的记录。让我们说:
Record(Model):
active = BooleanField()
...
过滤掉我可以做到:
Record.objects(active=True)
但这是一般情况,我希望几乎任何时候都可以过滤掉非活动记录。遵循DRY原则的最佳方法是什么,不要像上面的示例那样过滤我手动执行的每个请求,同时保留管理面板中管理非活动记录的能力。
答案 0 :(得分:1)
您可以使用Managers来完成此任务:
# 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()