Можно ли использовать модуль python random внутри django models для создания уникальных id

Я создаю веб-приложение для выставления счетов, поэтому я хочу иметь возможность создавать уникальный идентификатор каждого счета, но также я хочу контролировать, как выглядит идентификатор, например "",BU236718N

from random import randint, choice
from django.db import models

def myID():
    my_id = "BU" + randint(1,100000) + choice("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
    return(my_id)

class Invoice(models.Model):
    invoice_number = models.CharField(myID)

   def __str__(self):
        return (self.invoice_number)


Парадокс дня рождения гласит, что при выборе повторяющихся предметов из набора n предметов можно ожидать столкновения примерно после sqrt(n) выбора. У вас 2 600 000 предметов, поэтому вы можете ожидать столкновения примерно после 1600 выбираний.

Да, этот трюк может сработать, но вам нужно использовать строки намного длиннее, чем эта. Обычно в качестве уникального глобального идентификатора используются UUID или что-то производное от UUID. Они состоят из 128 бит.

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