Как сгенерировать уникальный accountid в модели пользователя, который должен автоматически генерироваться после регистрации пользователя

Это мой файл models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
from .manager import UserManager


# Create your models here.

class User(AbstractUser):   
    account_id = models.IntegerField(unique=True, default=1111111)
    log_id = models.IntegerField(unique=True, default=0000000)
       
    username = None 
    email = models.EmailField(unique=True)
   
        
    objects = UserManager()
        
    USERNAME_FIELD = 'email' 
    REQUIRED_FIELDS = []
    

Из этого кода я могу сделать идентификатор учетной записи из панели администратора, но я хочу генерировать уникальный идентификатор учетной записи автоматически, когда пользователи заполняют форму регистрации, он должен генерировать уникальный идентификатор учетной записи в панели администратора.

Это мой файл tools.py

from random import randint
from .models import *
from django.contrib.auth import get_user_model
User = get_user_model()

def User():
    def account_id():
        account_id = randint(1000000, 9999999)
        print(account_id)
        is_unique = User.objects.filter(account_id=account_id).exists()
        if not User.account_id:
            is_unique = False
            while not is_unique:
                account_id
            User.account_id = account_id
            User.save()
        else:
            account_id()    
    User.save()            
      ```

Обычной практикой является использование поля UUID в модели, например,

import uuid

class User(AbstractUser):   
    account_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    
    ...

Обратите внимание, что в большинстве случаев для различения экземпляров достаточно использовать ID модели по умолчанию.

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