Ограничение 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 и т.д.

Вернуться на верх