Миграция Django с добавлением UUIDField по умолчанию

У меня есть простая миграция Django, в которой я добавил UUIDField к модели Invoice следующим образом.

Поле модели:

uuid = models.UUIDField(
    _('Unique invoice ID'),
    default=uuid.uuid4,
    editable=False,
)

Созданная миграция:

migrations.AddField(
    model_name='invoice',
    name='uuid',
    field=models.UUIDField(default=uuid.uuid4, editable=False, 
    verbose_name='Unique invoice ID'),
),

Когда я запускаю эту миграцию, каждый счет-фактура получает то же значение UUID, что и другие, почти как если бы функция uuid.uuid4 вызывалась один раз, а затем это значение повторно использовалось для всех объектов.

Я использую PostgreSQL и Django 1.11.

Что я здесь делаю неправильно?


person damd    schedule 22.08.2018    source источник
comment
связанные: code.djangoproject.com/ticket/25007   -  person Willem Van Onsem    schedule 22.08.2018
comment
А также: docs.djangoproject .com/ru/1.11/howto/writing-migrations/   -  person Willem Van Onsem    schedule 22.08.2018
comment
@WillemVanOnsem: Здорово! Я приму ваш ответ, если вы сформулируете эти ссылки в одну. Спасибо.   -  person damd    schedule 22.08.2018
comment
это уже широко обсуждается (и отвечает) здесь: stackoverflow.com/questions/35281003   -  person raner    schedule 06.04.2021