你如何为一个模型及其所有孩子制作一个特定外键的Django表格?

时间:2009-11-18 19:01:08

标签: django django-forms

例如,假设你想为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界面就可以了,我该怎么做呢?

1 个答案:

答案 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