繁体   English   中英

Django 父类别选择题

[英]Django Multiple Choice Form with Parent Categories

我有一个简单的 model,如下所示:

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())

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

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

    但是,我想列出社区的父类别,在本例中是自治市镇。 所需的外观将是这样的:

  • 布鲁克林

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

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

还有另一种方法吗?

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

简单(也不错)的方法是手动在模板中添加 output <select>标签。 重组过滤器将完成所有工作。

对于未来走同样道路的人:

我找到了这个链接,它解释了如何通过创建自定义 ModelChoiceIterator(class 负责为选择字段制作选择元组)并使其包含父类别来做到这一点。

PS 作者创建了一个使用新迭代器的新 ModelChoiceField,但我相信您现在可以使用 ModelChoiceField 和 ModelMultipleChoiceField 的迭代器参数简单地设置自定义迭代器( 文档链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM