我有一個樣品形式:的Django的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 2011-04-18 18:19:43