В менеджере Django зачем использовать self.get_query_set(). Get(kwarg=val) вместо self.get(kwarg=val)?

В предыдущем вопросе я спросил, как выглядит метод менеджера:

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

Было предложено использовать self.get_query_set().get(key=key) вместо self.get(key=key) в рамках метода менеджера. Мне было интересно, в чем причина этого, так как первый кажется гораздо более многословным?

1 ответ

Решение

Я предполагаю, что автору просто нравится быть многословным. Нет никакой разницы. Метод get класса Manager определяется как:

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

Вы можете увидеть это в django/db/models/manager.py

Другие вопросы по тегам