Я добавил UUIDField
к одной из моих моделей. Все работает отлично, за исключением создания объектов из панели администратора, где UUID не генерируется автоматически. Мне пришлось прибегнуть к установке UUID для вновь создаваемых экземпляров.
Вот код моей модели:
class User(AbstractUser):
...
uuid = models.UUIDField(unique=True, default=uuid.uuid4)
Я больше ничего не делал нигде. Когда я вызываю User.objects.create(...)
, экземпляр создается с помощью uuid, но когда я создаю его в административной панели, происходит сбой, когда uuid имеет значение null и нарушает ограничение not-null.
Как обходной путь, я сделал это, но это кажется неправильным.
class UserAdmin(ModelAdmin):
...
def save_model(self, request, obj, form, change):
if not change:
obj.uuid = uuid4()
return super().save_model(request, obj, form, change)