Построение пригласительного кода для регистрации пользователей 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).