1

假设我有两个基本类,一个与另一个具有多对多关系:

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 的表单,供我输入 new 变量的Fooabc,以及一个列表框以将其链接到一个或多个Bar对象。我想为这个特定的表单做的是,而不是Bar对象的列表框,能够​​同时创建一个(并且只有一个)新Bar的(即,为Bar's的值显示第二个 TextArea zyx)和然后将 new 链接Bar到 new Foo。ManyToMany 关系稍后在编辑中出现,但在创建时,我想要一个Bar与一个 new 绑定Foo

是否可以通过发布表单一次完成所有操作,或者我将不得不使用一些 javascript 和 AJAX 来实际创建第Bar一个,获取它的新 ID,并将新的 ID 链接Foo到那个?

4

1 回答 1

1

可能的,但我不确定 aModelForm会为你做到这一点。


但是,您可以轻松地自己完成:

设置表格供用户填写:

  • 创建一个表单让用户输入abc可以ModelForm
  • 从允许用户输入任意数量的表单创建相关zyx实例Bar的表单集。(同样,formsetModelForm是可以的)

处理POST数据时,请执行以下操作:

  1. 验证表单和表单集是否有效
  2. 插入新实例
  3. Add your new Bar instances to your new Foo's Bar ManyToMany relationship

Small tip: remember that ModelForm.save returns the instance!

于 2012-12-05T14:46:56.230 回答