Может ли поле идентификатора в моделях django совпадать с двумя запущенными экземплярами приложения? - PullRequest
0 голосов
/ 27 апреля 2020

Я не очень хорошо понимаю, как работает автоматическое поле django ... Если я буду запускать два экземпляра приложения, используя gunicorn, возможно ли, что мои модели получат одинаковый идентификатор автоматического поля? У меня есть модельное сообщение, и я хочу проверить его идентификатор, но я хочу быть абсолютно уверенным, что идентификаторы уникальны и собираются путем добавления порядка.

1 Ответ

0 голосов
/ 27 апреля 2020

id уникальны для указанной модели c независимо от того, находится ли она в одном приложении или в приложении разницы. Поля id являются последовательными и увеличиваются на 1. Даже если вы удалите объект, Django не заменит этот идентификатор.

Нет необходимости добавлять поле идентификатора при создании модели как Django заботится об этом сам.

Если вы хотите, чтобы id был уникальным набором символов (например, вместо первого объекта id, являющегося 1, вы хотите, чтобы он был уникальный номер, такой как 12345678-1234-5678-1234-567812345678), вы можете использовать UUID (универсальный уникальный идентификатор) . В этом случае добавьте следующее поле в модель сообщения -

Перед запуском ниже вам нужно будет удалить все миграции приложения Message и старые записи, которые все еще используют поле id.

class Message(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...