Django 多个包含外键的表单

Django multiple included forms with foreign key

我有一个问题。这里有 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。 我该怎么做?

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

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)

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