2011-02-13 110 views
0

我想知道如何在中級模型formset上指定一些約束。 我有3類模型: 屬性,產品和AttributeValuation,這是屬性和產品中間體:中級模型formset驗證

class Attribute(models.Model): 
    type = models.CharField(max_length = 200) 
    pass 

class Product(models.Model): 
    attribute_values = models.ManyToManyField(Attribute, through='AttributeValuation') 

class AttributeValuation(models.Model): 
    attribute = models.ForeignKey(Attribute) 
    product = models.ForeignKey(Product) 

最重要的是,我已經建立AttributeValuationInline與AttributeFormset,並註冊到ProductAdmin:

class AttributeValuationInline(admin.TabularInline): 
    model = AttributeValuation 
    extra = 0 
    formset = AttributeFormset 

class ProductAdmin(admin.ModelAdmin): 
    inlines = (AttributeValuationInline,) 

class AttributeFormset(BaseInlineFormSet): 
    def clean(self): 
     pass 

我的問題是:我該如何檢查乾淨的方法每個內聯行的內容(表格)?我已經試過了Formset中的每個self.forms形式,但是我無法訪問Attribute模型的特定字段(想象一下,我不想用不相關的數據來混淆我的問題)?

在我的示例中,我希望每個產品的每個類型最多有一個屬性(以便沒有人將兩個或多個屬性與同一個產品關聯到同一類型)。

回答

0
self.forms[0].cleaned_data 

將無法​​正常工作?

0

我通過

for form in self.forms: 
     form.instance 

去了,這是確定。 clean_data爲什麼要更好?