Пока вы не храните очень большое количество элементов в секунду, вам не придется беспокоиться об уникальности uuid4.
Добавление уникального = True приведет к созданию уникальной записи здесь, но ваше сохранение ( ) потерпит неудачу, если он не уникален. Если вы действительно хотите быть уверены, вы можете сделать что-то вроде этого:
def generate_unique_uuid(model=None, field='code'):
unique_id= uuid.uuid4() # or some hex represenation
filter = {field: unique_id}
exists = model.objects.filter(**filter).exists()
while exists:
unique_id= uuid.uuid4() # or some hex represenation
filter = {field: unique_id}
exists = model.objects.filter(**filter).exists()
return unique_id
def generate_unique_id_your_model():
code = generate_unique_code(model=YourModel, field='uid')
return code
class YourModel(models.Model):
uid = models.CharField(max_length=10, default=generate_unique_id_your_model, editable=False)
Или вы можете использовать поле UUID:
uid = models.UUIDField(default=uuid.uuid4)