Django: «primary_key = True» также означает «уникальный»? - PullRequest
2 голосов
/ 27 сентября 2019

Здравствуйте, я тестирую аутентификацию Django и вкладываю пользовательские данные.Я создал простую модель MyProfil для своих пользователей.Я хотел протестировать создание пользовательского id и установить primary_key=True как id = models.UUIDField.

models.py

 class MyProfil(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    owner = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    aboutme = models.TextField(max_length=300, blank=True)
    city = models.TextField(max_length=300, blank=True)

.все работает в мою пользу, но у меня есть вопрос, который я не мог ответить сам, даже после прочтения документа Django.

Вопрос

primary_key=True на моем id поле также означает unique или я должен объявить это?

1 Ответ

5 голосов
/ 27 сентября 2019

Да .Поскольку первичный ключ означает значение, которое может однозначно идентифицировать объект.В документации по параметру primary_key мы видим:

Field.primary_key

ЕслиTrue, это поле является первичным ключом для модели.

Если вы не укажете primary_key=True для какого-либо поля в вашей модели, Django автоматически добавит AutoField для хранения первичного ключа,поэтому вам не нужно устанавливать primary_key=True в любом из ваших полей, если вы не хотите переопределять поведение первичного ключа по умолчанию.Для получения дополнительной информации см. Автоматические поля первичного ключа.

primary_key=True подразумевает null=False и unique=True.На объекте допускается только один первичный ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...