假设我有两个基本类,一个与另一个具有ManyToMany关系:
class Foo(models.Model):
abc = models.TextField()
test = models.ManyToManyField(Bar)
class Bar(models.Model):
zyx = models.TextField()
然后我为Foo创建一个Django表单:
class FooForm(forms.ModelForm):
class Meta:
model = Foo
fields = ["abc", "test"]
这将创建一个包含TextArea的表单,供我输入新Foo
的{{1}}变量的值,以及一个列表框,将其链接到一个或多个{{1}对象。我想为这个特定表单做什么,而不是abc
对象的列表框,能够同时创建一个(只有一个)新Bar
(即显示一个第二个TextArea,其值为Bar
的{{1}}},然后将新Bar
链接到新的Bar
。 ManyToMany关系稍后会出现在编辑中,但在创建时,我只想将一个zyx
绑定到一个新的Bar
。
是否可以通过POST表单一次完成所有操作,或者我将不得不首先使用一些javascript和AJAX来创建Foo
,获取其新ID,并链接新的{ {1}}那个?
答案 0 :(得分:1)
是可能的,但我不确定ModelForm
会为你做那件事。
设置要填写的用户表单:
abc
(可以成为ModelForm
)zyx
来创建相关的Bar
个实例。 (再次,ModelForm
的形式集可以)处理POST
数据时,请执行以下操作:
Bar
个实例添加到新Foo
的{{1}} ManyToMany关系 小提示:请记住Bar
会返回实例!