Хорошо, что вы определяете здесь, это класс MyUserManager
. Это наследуется от BaseUserManager
класса [GitHub] . Это подкласс класса Manager
[GitHub] . Вы на самом деле используете менеджер все время. Например, SomeModel.objects
- менеджер.
Менеджер, если он используется, имеет ссылку на модель , которой он управляет. Так что SomeModel.objects
является менеджером, но у этого менеджера есть атрибут .model
, который фактически ссылается на класс SomeModel
.
Теперь класс в Python, как правило, может вызываться . Например, если вы звоните int('42')
, вы вызываете конструктор int(..)
. В этом случае ваш self.model
будет - по умолчанию - моделью User
(хотя это может быть перезаписано).
Теперь в Django конструктор модели использует именованные параметры для создания экземпляра модели. Если вы пишете User(date_of_birth=date(2018, 7, 3), email='bob@work.com')
, то вы создаете несохраненный User
экземпляр со значениями поля 3 июля 2018 года как date_of_birth
, а 'bob@work.com'
как email
.
Таким образом, здесь вы обычно создаете экземпляр User
(или экземпляр другой модели, которую вы использовали для представления User
с). Затем вы позже используете user.save()
, чтобы сохранить этот экземпляр в базе данных и вернуть его.