Я предполагаю, что он проверяет, является ли поле уникальным для всех других записей в той же таблице.
Это делает это конкретное поле уникальным, что означает, что не может существовать две сущностис тем же значением (в то же время).Важно отметить, что ограничение уникальности не выполняется для NULL
значений: действительно, две или более записей могут одновременно существовать, когда уникальный столбец имеет NULL
для всех этих записей.
Уникальность обычно обеспечивается на уровне базы данных (учитывая, что база данных может обеспечить это).В случае, если вы создаете запись со значением, которое уже принято, создание вызовет IntegrityError
.Действительно, он вызовет что-то вроде:
>>> Model.objects.create(name='foo')
<Model: Model object (1)>
>>> Model.objects.create(name='foo')
⋮
django.db.utils.IntegrityError: (1062, "Duplicate entry 'foo' for key 'model_name_72507083_uniq'")
Таким образом, не перезапустит конструктор по умолчанию.Вы несете ответственность за то, чтобы генератор каждый раз создавал правильное значение.Таким образом, он не застрянет в бесконечном цикле, а вызовет ошибку, если уже существует функция по умолчанию, заполненная функцией.