【问题标题】:Access queryset of a modelChoiceField in template tag在模板标签中访问 modelChoiceField 的查询集
【发布时间】:2025-12-19 21:40:06
【问题描述】:

我有一个具有颜色字段的模型

class EventCategory(models.Model):
    name = models.CharField(max_length = 10)
    color = models.CharField(max_length = 8)

和事件模型

class Event(models.Model):
    #fields
    category = models.ForeignKey(EventCategory)

如何在我的模板标签中访问 modelChoice 查询集。做这样的事情是行不通的(假设我有一个表单发送到我的模板)

<select name="category" id="id_category">
    {%for category in form.category.queryset%}
        <option value="{{category.pk}} style="background-color:{{category.color}};">category.name</option>
    {%endfor%}  
</select>

我知道在我的 python 文件中我可以做这样的事情:

form = EventForm()
for c in form.fields['category'].queryset:
    print c

并且会给我它的 EventCategory 实例。但是我怎样才能在模板标签中做同样的事情呢?

编辑知道了!!!

{%for category in in form.category.field.queryset%}
    etc
{%endfor%}

【问题讨论】:

  • 如果您找到了自己问题的答案,请将其添加为正确答案并接受。这将改善其他有相同问题的人的情况

标签: django django-forms


【解决方案1】:

知道了!!!

{% for category in form.category.field.queryset.all %}
    etc
{% endfor %}

虽然我现在处理一个新问题,但也许你知道它为什么会发生。如果我添加一个新类别,它不会显示在“选择”框中,直到我重新启动服务器。

编辑:当我像{{form.category}}一样正常使用它时它可以正常工作

EDIT2:现在已编辑,可以正常工作。

【讨论】: