2011-02-13 70 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为什么要更好?