У меня есть следующее:
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. Это доменная логика, смешанная с логикой представления. Это нарушает DRY, потому что если я покажу одну и ту же форму на 2 страницах, мне придется повторять один и тот же блок. Это также нарушает DRY, потому что если у меня есть две формы для одного и того же, я должен написать одно и то же, кроме: снова.