如何处理modelForms中的多对多关系

时间:2011-06-07 17:59:47

标签: django

我有一个类似于这个的模型:

     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上设置值”错误。如果我排除目标字段,它可以正常工作。

你能建议任何解决方法吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

如上所述,(extra fields)中有Class C。 django如何填充这些额外的字段,如果使用给定的A,你想要创建更多的B。

您应该为C创建一个管理员,您可以在其中将每个AB添加到给定的C