Построение пригласительного кода для регистрации пользователей Django 4.0

Я хочу построить систему регистрации пользователей по пригласительному коду в Django. Для регистрации нового пользователя необходимо заполнить два поля формы 'INVITE' (UUID, полученный от уже существующего пользователя) и 'PASSWORD'. После отправки данных (requests.POST) Django проверяет пригласительный код (находит его в базе данных и соотносит с id пользователя) и если результат успешный, Django генерирует 8-символьное имя пользователя и добавляет новую запись пользователя в базу данных с заполнением ID, USERNAME, PASSWORD, INVITER, UUID. Например, код приглашения - это UUID существующего пользователя.

 myapp/model.py
from django.db import models
from django.contrib.auth.models import AbstractBaseUser

class Users(AbstractBaseUser):
    def login_gen():
        import uuid
        uuid = uuid.uuid4()
        return str(uuid)[:8], uuid

    id = models.BigAutoField(primary_key=True)
    username = models.CharField("Username", max_length=8, null=False, blank=False, db_index=True, unique=True, default=login_gen()[0])
    password = models.CharField("Password", max_length=255, null=False, blank=False)
    role = models.BooleanField("Right or Left", null=False, blank=False)
    inviter = models.ForeignKey('Whos invite', self.id, null=False, blank=False)
    #... other fields
    UUID = models.UUIDField("UUID", null=False, blank=False, default=login_gen()[1])
    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['username', 'password', 'role']
    def __str__(self):
        return self.username

Я хотел бы реализовать задачу с помощью средств аутентификации, встроенных в Django, но никак не могу справиться с моделью пользователя (model.py), формой (forms.py) и менеджером (managers.py).

Вернуться на верх