Неповторяемые поля в моделях - PullRequest
1 голос
/ 15 мая 2019

Есть ли в файле models.py директива, позволяющая получить значение, не повторяющееся в поле? Я составляю таблицу людей, и мне нужно, чтобы поле электронной почты не повторялось.

1 Ответ

2 голосов
/ 15 мая 2019

Да, вы можете передать unique=True [Django-doc] в это поле.

Например:

from django.db import models

class MyModel(models.Model):
    email = models.CharField(max_length=128, <b>unique=True</b>)

Как указано в документации:

Field.unique

Если True, это поле должно быть уникальным для всей таблицы .

Это применяется на уровне базы данных и модели проверка . Если вы попытаетесь сохранить модель с повторяющимся значением в уникальное поле, django.db.IntegrityError будет поднято метод модели save().

Эта опция действительна для всех типов полей, кроме ManyToManyField и OneToOneField.

Обратите внимание: если для параметра unique установлено значение True, вам не нужно указывать db_index, потому что уникальный подразумевает создание индекса.

Так что здесь для каждых двух различных MyModel объектов мы знаем, что их поле email будет содержать различное значение.

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