【问题标题】:Django multiple included forms with foreign keyDjango 多个包含外键的表单
【发布时间】:2015-08-23 20:09:49
【问题描述】:

我有问题。以下是 2 个相关模型:

class Auto(models.Model):
  ...
class Part(models.Model):
  ...
  parent = models.ForeignKey(Auto, blank = False, null = False)

所以,我想创建下一个 django 表单:

Auto1.field1  Auto1.Part1.field1 Auto1.field2
              Auto1.Part1.field2
              Auto1.Part2.field1
              Auto1.Part2.field2
              ...

Auto2.field1  Auto2.Part1.field1 Auto2.field2
              Auto2.Part1.field2
              Auto2.Part2.field1
              Auto2.Part2.field2
              ...
...

所有字段都必须是可更新的,对于模型 Auto 和模型 Part。 我该怎么做?

【问题讨论】:

  • 您是否正在寻找一种方法以相同的形式同时创建PartAuto 对象?如果是这样,您需要在 HTML 中手动编写表单代码,并且您的视图需要组装对象并以正确的顺序创建它们。
  • 不完全是。我想以相同的形式更新这两个对象,而不是创建

标签: python django forms django-forms


【解决方案1】:

您应该尝试使用Inline formsets。例如,假设您有一个 Auto modelform,可以这样完成:

autoforms = []
part_formsets = []
autos = Auto.objects.all()
PartFormSet = inlineformset_factory(Auto, Part, fields=('field1', 'field2'))
for auto in autos:
    autoform = AutoForm(instance=auto)
    autoforms.append(autoform)
    part_formset = PartFormSet(instance=auto)
    part_formsets.append(part_formset)
c = {'autoforms': autoforms, 'part_formsets': part_formsets}
return render(request, 'some.html', c)

现在您可以在模板中迭代 autoforms 和 part_formsets 以获得所需的表单。但是,我还没有检查是否可以根据需要在模板中轻松呈现它们。

【讨论】:

  • 你有我的例子吗?
  • 我试图展示一些如何做到这一点 - 看看更新的答案。
猜你喜欢
  • 2021-09-13
  • 2011-03-05
  • 1970-01-01
  • 2014-07-10
  • 2010-10-20
  • 2014-09-11
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多