У меня есть образец формы:Джанго ModelForm (с исключенной поля)
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()
Проблема заключается в том, что сочетание «компании» и «типа» должен быть уникальным (отсюда «unique_together»). Это выполняется в базе данных, поэтому django не волнует. мне нужно распространить метод этой формы чистой() для проверки уникальности как таковой:
def clean(self):
cleaned_data = self.cleaned_data
# check for uniqueness of 'company' and 'type'
Проблема здесь состоит в том, что «компания» не там, потому что она была исключена. Каков наилучший способ повысить ошибку проверки формы в этом случае?
- редактировать Это только для с добавлением предметов со скидкой. Нет начального экземпляра.
Ответы найдены здесь: http://stackoverflow.com/questions/2141030/djangos-modelform-unique-together-validation – gladysbixly