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 以获得所需的表单。但是,我还没有检查是否可以根据需要轻松地在模板中呈现它们。
我有一个问题。这里有 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 以获得所需的表单。但是,我还没有检查是否可以根据需要轻松地在模板中呈现它们。