Почему в django.contrib.auth.models.UserManager есть метод create_user и _create_user

В источнике для django существует класс UserManager, чья работа (насколько я понимаю) заключается в том, чтобы создавать пользователей в соответствии с рядом полученных параметров и сохранять их в базе данных. Класс выполняет это с использованием двух методов. Один метод create_user и один метод _create_user, последний вызывается первым. Мой вопрос: зачем нужна два метода? Почему бы просто не сделать то же самое? Как это:

def create_user(self, username, email=None, password=None,
 **extra_fields):
 """
 Creates and saves a User with the given username, email and password.
 """
 now = timezone.now()
 if not username:
 raise ValueError('The given username must be set')
 email = self.normalize_email(email)
 user = self.model(username=username, email=email,
 is_staff=False, is_active=True,
 is_superuser=False,
 date_joined=now, **extra_fields)
 user.set_password(password)
 user.save(using=self._db)
 return user
1 ответ

Кажется, я сам нашел ответ. Класс также имеет метод create_superuser который также вызывает _create_user, но с разными аргументами. Поэтому использование _create_user избавляет нас от необходимости писать одну и ту же функцию дважды.

licensed under cc by-sa 3.0 with attribution.