【发布时间】:2011-08-08 01:00:12
【问题描述】:
我有一个样本表格:
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'))
表单不包括“公司”字段,因为用户已经使用 UI 选择了此字段。
我打算做一个:
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'
这里的问题是“公司”不在其中,因为它已被排除在外。 在这种情况下引发表单验证错误的最佳方法是什么?
-- 编辑 这仅适用于添加折扣条目。 没有初始实例。
【问题讨论】:
标签: django validation forms