Уникальность данных формы
Подскажите, пожалуйста. Я создала форму, в которой на один заказ можно выбрать больше 1 исполнителя. Кое-как сделала так, чтоб если пользователь по ошибки несколько раз выбрал одного и того же исполнителя при сохранении дублирование убиралась. Но как сделать так, чтоб при этом пользователь узнавал об этом, то есть что-бы возникало что-то из серии "вы выбрали одного и того же исполнителя несколько раз"
class JrtnPerson(models.Model):
rtn = models.ForeignKey(Drtn, verbose_name='Подразделение Ростехнадзора', on_delete=models.CASCADE)
name = models.CharField(max_length=200, verbose_name='Имя и Отчество')
surname = models.CharField(max_length=200, verbose_name='Фамилия')
tel_mob = PhoneNumberField(verbose_name="Номер телефона мобильный", blank=True, null=True)
tel_rab = PhoneNumberField(verbose_name="Номер телефона рабочий", blank=True, null=True)
email = models.EmailField(max_length=100, verbose_name="Электронная почта", blank=True, null=True)
# def __str__(self):
# return '%s %s' % (self.surname, self.name)
# def save(self, *args, **kwargs):
# if not self.JrtnPerson.objects.filter(surname=self.surname, name=self.name).exists():
# super(self.surname, self.name).save(*args, **kwargs)
class Meta:
ordering = ('surname',)
verbose_name = 'Сотрудник Ростехнадзора'
verbose_name_plural = 'Сотрудники Ростехнадзора'
unique_together = ('name', 'surname')
def save(self, *args, **kwargs):
self.full_clean()
super(JrtnPerson, self).save(*args, **kwargs)
def __str__(self):
return '%s %s' % (self.surname, self.name)
class JrtnCurator(models.Model):
expertise = models.ForeignKey(Cexpertise, verbose_name='Экспертиза', on_delete=models.CASCADE)
curator = models.ForeignKey(JrtnPerson, verbose_name='Сотрудник Ростехнадзора', on_delete=models.CASCADE)
def __str__(self):
return '%s' % self.curator
class Meta:
ordering = ('curator',)
verbose_name = 'Куратор от Ростехнадзора'
verbose_name_plural = 'Кураторы от Ростехнадзора'
def save(self, *args, **kwargs):
if not self.__class__.objects.filter(expertise=self.expertise, curator=self.curator).exists():
super(JrtnCurator, self).save(*args, **kwargs)
else:
raise ValidationError('Нельязя добавлять одного и того же куратора')
Ответы (1 шт):
Автор решения: Tim-Tam
→ Ссылка
Вам нужно добавить ограничения UniqueConstraint в класс Meta. Добавьте в класс Meta
constraints = [
models.UniqueConstraint(
fields=('name', 'surname'), name='uniq_name'
)
]