Django модели: UUID в поле не первичного ключа не генерируется в панели администратора - PullRequest
0 голосов
/ 30 января 2020

Я добавил 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...