Ограничение unique_together могло конфликтовать с unique_field в dajngo Class
В основном, я хотел бы знать, нет ли конфликта при использовании ограничения unique_together, а также параметра unique=true в одном из полей, принадлежащих массиву unique_together.
это потому, что я не могу удалить параметр unique=true моего поля, потому что оно используется как внешний ключ в другой модели.
class User(AbstractUser):
# User information
fiscal_number = models.CharField(max_length=30,unique=True)
phone = models.CharField(max_length=15, null=True)
email = models.EmailField(max_length=254, verbose_name='email address')
class Meta:
unique_together = ['fiscal_number', 'email']
Как вы видите, цель состоит в том, чтобы сделать комбинацию полей fiscal_number и email уникальной
В основном, я хотел бы знать, нет ли конфликта при использовании ограничения unique_together, а также параметра
unique=true
в одном из полей, принадлежащих массивуunique_together
.
Это не имеет смысла. Действительно, установка unique=True
означает, что не может быть двух пользователей с одинаковыми fiscal_number
, если только эти два пользователя не являются одним и тем же пользователем.
unique_together = ['fiscal_year', 'email']
означает, что комбинация из fiscal_year
и email
должна быть уникальной. Это означает, что не может быть двух пользователей, у которых fiscal_year
и email
одинаковы (если только эти два пользователя не являются одним и тем же пользователем). Но так как мы уже сделали fiscal_year
как поле уникальным, мы уже знаем, что этого не может произойти.
Вы можете пометить поле email
как unique=True
. Это не эквивалентно unique_together = ['fiscal_number', 'email']
. При unique_together
комбинация двух столбцов должна быть уникальной, тогда как установка unique=True
на нескольких полях означает, что все User
имеют разные fiscal_year
, и разные email
и т.д.