【问题标题】:Django inline formset multiple modelsDjango内联表单集多个模型
【发布时间】:2019-04-23 22:46:04
【问题描述】:

TL;DR:我需要某种用于表单集的表单集。

我有两个与一个业务实体相关的不同模型,我需要制作一个表单来编辑这两个模型,就像一个表单一样。而且我需要像 Django inline formset 那样在一个页面上创建很多这样的表单。

现在我有以下东西:

class Parent(models.Model):
  name = models.Charfield()

class FirstChild(models.Model):
  name = models.Charfield()
  e_id = models.IntegerField()
  parent = models.ForeignKey(Parent)

class FirstChildForm(django.forms.ModelForm):
    class Meta:
        model = Child
        fields = ('name', 'e_id', 'parent')
        widgets = {'parent': forms.TextInput}

我使用内联表单集渲染了很多:

formset_class = inlineformset_factory(Parent, FirstChild, 
                                      form=FirstChildForm, extra=1)

但是现在我必须为它添加第二个子模型和一个表单,并且仍然像一个内联表单一样渲染它,但让它的表单实际上编辑两个模型。像这样:

class SecondChild(models.Model):
  name = models.Charfield()
  e_id = models.IntegerField()
  parent = models.ForeignKey(Parent)

class SecondChildForm(django.forms.ModelForm):
    class Meta:
        model = Child
        fields = ('name', 'e_id', 'parent')
        widgets = {'parent': forms.TextInput}

formset_class = inlineformset_factory(models=[Parent, FirstChild], 
                                      forms=[FirstChildForm, SecondChildForm], 
                                      extra=1)

据我了解,Django 表单集目前无法与多个模型一起使用。

那么我应该选择哪种方式来实现这种行为并且不破坏所有 django 概念?,我不能使用一些额外的库,所以我必须自己实现所有东西,如果它很重要,我会使用 django 1.6。

【问题讨论】:

    标签: django forms


    【解决方案1】:

    所以,最后我以这种方法为基础:https://micropyramid.com/blog/how-to-use-nested-formsets-in-django/

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2014-05-24
      相关资源
      最近更新 更多