在Django管理器中,为什么要使用self.get_query_set()。get(kwarg = val)而不是self.get(kwarg = val)?

时间:2012-02-23 14:06:37

标签: python django django-managers

在我问prior question时,管理员的方法如下:

def activate(key):
    try:
        profile = self.get(key=key)
    except self.model.DoesNotExist:
        return None

    if not profile.key_expired():
        # -> Activate user
        return user

    return None

建议在manager方法中使用self.get_query_set().get(key=key)代替self.get(key=key)。我想知道这是什么原因,因为前者似乎更加冗长?

1 个答案:

答案 0 :(得分:2)

我猜作者只是喜欢啰嗦。没有区别。 Manager类的get方法定义为:

def get(self, *args, **kwargs):
    return self.get_query_set().get(*args, **kwargs)

您可以在django / db / models / manager.py

中亲自查看