我想知道如何在中间模型formset上指定一些约束。 我在模型中有3个类: 属性,产品和属性值,属于属性和产品的中间:
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)
最重要的是,我使用AttributeFormset构建了AttributeValuationInline,并将其注册到ProductAdmin:
class AttributeValuationInline(admin.TabularInline):
model = AttributeValuation
extra = 0
formset = AttributeFormset
class ProductAdmin(admin.ModelAdmin):
inlines = (AttributeValuationInline,)
class AttributeFormset(BaseInlineFormSet):
def clean(self):
pass
我的问题是:如何在 clean 方法中检查每个内联行(表单)的内容?我已经尝试过在Formset中使用每种形式的self.forms,但是我无法访问Attribute模型的特定字段(想象有一些,我不想用无关数据混淆我的问题)?
在我的示例中,我希望每个产品最多具有一个属性(因此没有人将两个或多个属性与一个产品关联的相同类型)。
答案 0 :(得分:0)
self.forms[0].cleaned_data
不会工作?
答案 1 :(得分:0)
我经历了
for form in self.forms:
form.instance
没关系。为什么cleaning_data应该更好?