У меня есть образец формы:
class AdminDiscountForm(ModelForm):
class Meta:
model = Discount
exclude = ('company',)
модель, на которую он указывает:
class Discount(models.Model):
class Meta:
verbose_name=_('Discount')
verbose_name_plural=_('Discounts')
unique_together = ('company','type')
company = models.ForeignKey(Company)
type = models.CharField(max_length=5, choices=DISCOUNT_CHOICES)
discount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name=_('Discount'))
Форма исключает поле «компания», поскольку пользователь уже выбрал его с помощью пользовательского интерфейса.
Я планирую сделать:
company = blah
if form.is_valid():
obj = form.save(commit=False)
obj.company = company
obj.save()
Проблема в том, что комбинация «компания» и «тип» должна быть уникальной (отсюда и «уникальный_все»). Это применяется в базе данных, поэтому django не волнует.
Мне нужно расширить метод clean () этой формы, чтобы проверить уникальность как таковую:
def clean(self):
cleaned_data = self.cleaned_data
# check for uniqueness of 'company' and 'type'
Проблема здесь в том, что «компании» там нет, потому что она была исключена.
Каков наилучший способ вызвать ошибку проверки формы в этом случае?
- редактировать
Это только для добавления скидок.
Там нет первоначального экземпляра.