我有一个样本表单:
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()
问题在于'company'和'type'的组合应该是唯一的(因此使用了'unique_together')。这在数据库中得到了强制执行,所以django不会关心。 我需要扩展这个表单的clean()方法来检查唯一性,如下:
def clean(self):
cleaned_data = self.cleaned_data
# check for uniqueness of 'company' and 'type'
问题在于“company”未包含在其中,因为它已被排除。 在这种情况下,引发表单验证错误的最佳方法是什么?
-- 编辑 这仅适用于添加折扣条目。 没有初始实例。