2011-06-07 53 views
0

我有类似这样的一个模型:如何处理多对多关系,modelForms

 class A(models.Model): 
     name = models.CharField(primary_key=True) 

    class B(models.Model): 
     (morefields) 
     target = models.ManyToManyField(A,through='C') 

    class C(models.Model): 
     a_key = models.ForeignKey(A) 
     b_key = models.ForeignKey(B) 
     (extra fields) 

我创建一个表单编辑使用的ModelForm的B的项目。但是,我得到“不能在指定中间模型的ManyToManyField上设置值”错误。如果我排除目标字段,它工作正常。

你能提出任何解决方法吗?

回答

0

您可以使用内联。问题在于Django无法为您创建关系,因为必须在连接表(您的“通过”模型)上设置其他字段。请尝试以下操作:

class CInlineAdmin(admin.TabularInline): 
    model = C 
    extra = 1 

class BAdmin(admin.ModelAdmin): 
    inlines = [CInlineAdmin,] 
0

通过以上你自己提的,你有Class C(extra fields)。如果使用给定的A,django应该如何填充这些额外的字段,您希望创建更多的B字段。

你或许应该为C,在那里你可以每AB添加到给定C

创建一个管理员