Как создать свою модель пользователя в django?

Как создать модель пользователя, которому при регистрации необходимо указывать логин, пароль, а также логин пригласившего человека (autocomplete из колонки в таблице)? Как при этом лучше реализовывать аутентификацию - через админку или создавать отдельную страницу для простых "смертных" пользователей? Почему?
  • Вопрос задан
  • 3429 просмотров
Решения вопроса 1
@bromzh
Drugs-driven development
В новой джанге можно кастомизировать модель пользователя.

Попроси модераторов гугла убрать у тебя бан на поиск.

UPD
Сжатый пересказ, при учёте, что ты создаёшь приложение с нуля, а не мигрируешь с созданного приложения с готовой базой и пользователями:

  1. В настройках указываешь путь до твоей модели:
    AUTH_USER_MODEL = 'myapp.MyUser'
  2. Везде в моделях где используется внешний ключ на юзера, прописываешь settings.AUTH_USER_MODEL
    class Article(models.Model):
        author = models.ForeignKey(settings.AUTH_USER_MODEL)

    И тоже делаешь для сигналов:
    def post_save_receiver(signal, sender, instance, **kwargs):
        pass
    
    post_save.connect(post_save_receiver, sender=settings.AUTH_USER_MODEL)

  3. Создаёшь модель пользователя, в которой указываешь поле-идентефикатор (например, это может быть поле name, или поле email, или ещё какое-нибудь другое).
    class MyUser(AbstractBaseUser):
        identifier = models.CharField(max_length=40, unique=True)
        ...
        USERNAME_FIELD = 'identifier'

    В этой же модели прописываешь необходимые для регистрации поля:
    class MyUser(AbstractBaseUser):
        ...
        date_of_birth = models.DateField()
        height = models.FloatField()
        ...
        REQUIRED_FIELDS = ['date_of_birth', 'height']

    Ещё надо переопределить некоторые методы и поля при необходимости (в доках написано какие)
  4. Надо создать кастомный менеджер, создающий пользователя. В нём надо реализовать методы create_user и create_superuser
  5. Надо создать новые формы для твоего пользователя и кастомизировать класс для админки, учитывающий твои новые поля
  6. ???
  7. PROFIT
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@DjangoIsFree
www.lasolution.be/blog/creating-custom-user-model-...
тут глянь последний пример, чтоб зарегать новую модель в админке: djbook.ru/examples/6
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы