У меня есть следующее:
class AccountAdmin(models.Model):
account = models.ForeignKey(Account)
is_master = models.BooleanField()
name = models.CharField(max_length=255)
email = models.EmailField()
class Meta:
unique_together = (('Account', 'is_master'), ('Account', 'username'),)
Если я затем создаю новый AccountAdmin с тем же именем пользователя, что и у другого пользователя в той же учетной записи, вместо того, чтобы выдавать ошибку при отображении в шаблоне, он разрывается с помощью IntegrityError, и страница умирает. Я хотел бы, чтобы, на мой взгляд, я мог просто пойти:
if new_accountadmin_form.is_valid():
new_accountadmin_form.save()
Как мне победить эту проблему. Существует ли второй is_valid()
тип метода, который проверяет БД на нарушение части unique_together = (('Account', 'is_master'), ('Account', 'username'),)
?
Мне бы хотелось, чтобы мне не приходилось ловить ошибку IntegrityError. Это доменная логика, смешанная с логикой представления. Это нарушает СУХОЙ, потому что, если я отображу ту же форму на 2 страницах, мне придется повторить тот же блок. Это также нарушает DRY, потому что если у меня есть две формы для одной и той же вещи, я должен написать то же самое, за исключением: снова.