Django管理表单 - 使用ForeignKey的ManyToMany行为

时间:2014-08-12 08:58:58

标签: django django-models django-forms django-admin

当我在这两个模型之间定义ManyToMany关系时:

class A (models.Model):
    pass

class B (models.Model):
    a = models.ManyToManyField(A)

Django生成两个管理部分,每个模型一个。在B形式中,我可以直接创建一个A对象,这要归功于ManyToMany关系(并且由于A形式中的一个字段弹出一个B形式)。

如果我使用ForeignKey,是否可以重现此行为?这是我的用例:

class A (models.Model):
    pass

class B (models.Model):
    a = models.ForeignKey(A)

class C (models.Model):
    b = models.ForeignKey(B)

因此,用户可以直接从A表单创建相关的B对象,并从这些表单中创建没有嵌套表单的C对象(使用" popping"表单)。

TL; DR:基本上绕过了缺乏django嵌套表单。

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,它是可行的,但只能通过弹出窗口(已经在管理员中使用django构建),如果你想直接在表单中编辑远程对象(C),那么你需要在管理员中进行更改,例如创建特殊视图,分配适当的查询等。 另请注意,您需要使用admin注册所有3个模型,否则您只能访问(弹出)注册的模型。