Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何处理modelForms中的多对多关系_Django - Fatal编程技术网

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

Django 如何处理modelForms中的多对多关系,django,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.Foreig

我有一个类似的模型:

     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上设置值”错误。如果排除目标字段,则效果良好


您能建议解决这个问题的方法吗?

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

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

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

通过您自己的上述提及,您在
C类中有
(额外字段)
。如果通过使用给定的
A
,您希望创建更多的B,那么django应该如何填充这些额外字段

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