所以,我已经阅读了大部分文档,并且我一直在四处寻找,但我找不到我的问题的答案。我将从代码开始。
# Manager
class ActiveManager(models.Manager):
def get_query_set(self):
return super(ActiveManager, self).get_query_set().filter(is_active=True)
# Model
class ModelA(models.Model):
# ...
is_active = models.BooleanField()
objects = ActiveManager()
all_objects = models.Manager()
所以,当我在玩的时候,我注意到如果我这样写并使用get_object_or_404()
,那么它将使用ActiveManager
来首先搜索所有活动记录,然后返回与我的查询相关的记录。但是,如果我切换了经理的顺序:
class ModelA(models.Model):
# ...
all_objects = models.Manager()
objects = ActiveManager()
然后它使用默认管理器(在这种情况下all_objects
)进行查询。我想知道此更改会影响哪些其他功能。
编辑:我知道在类中找到的第一个管理器成为默认管理器,但我想知道哪些特定功能使用这个默认管理器(如get_object_or_404
)