带有父类别的Django多选表单

时间:2011-05-29 20:22:49

标签: python django forms parent-child multiple-choice

我有一个看起来像这样的简单模型:

class Neighborhood(models.Model):
    name = models.CharField(max_length=255)
    borough = models.ForeignKey(Borough)

    def __unicode__(self):
        return self.name

在我的forms.py文件中,我有一个使用选项呈现的简单表单:

class SearchForm(forms.Form):
    neighborhood = forms.ModelMultipleChoiceField(required=False, queryset=Neighborhood.objects.all(), widget=CheckboxSelectMultiple())

这很好,并列出了我的邻居模型中的所有选项。它看起来像这样:

  • 下东区
  • 时代广场
  • 东村
  • 西村
  • ...等

    但是,我想列出邻居的父类别,在这种情况下是自治市镇。期望的外观如下:

  • 布鲁克林

    • 威廉斯堡
    • DUMBO
    • ...
  • 曼哈顿
    • 下东区
    • 时代广场
    • 西村
    • 东村
  • 皇后
    • ...

我试图调用两个不同的对象并将它们组合成一个自定义列表,但是我无法通过查询集传递它,因为它给了我一个没有“全部”可用的AttributeError。

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是为它编写自定义表单小部件。

简单(也不错)方法是手动输出模板中的<select>标签。 regroup过滤器可以完成所有工作。