В менеджере 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