簡體   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