Почему в 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.