例如,假设你想为Supervisor创建一个ModelForm,它也允许你以相同的形式创建或更新3个或更多的Underlings。
from django.db import models
class Supervisor(models.Model):
name = models.CharField(max_length=100)
class Underling(models.Model):
supervisor = models.ForeignKey(Superisor, related_name="underlings")
name = models.CharField(max_length=100)
这应该是非常标准的,对吗?只需为下属制作FormSet,然后......那又怎样? Django Admin界面就可以了,我该怎么做呢?
答案 0 :(得分:0)
首先,您要为Underling
s定义ModelForm:
class UnderlingForm(forms.ModelForm):
class Meta:
model = Underling
然后你会创建FormSet UnderlingForm
s:
UnderlingFormSet = formset_factory(UnderlingForm, extra=3) # 3 Underlings.
然后实例化并循环它们(或将它们传递给模板上下文):
formset = UnderlingFormSet()
for form in formset.forms:
print form.as_table()
由于你在同一个视图中也有一个SupervisorForm,我建议你也可以看一下prefix
option。如果您仍然对Formsets有疑问,请here is the official docs。