Как правильно отобразить форму модели с множественным выбором в Django
Итак, у меня есть две модели, одна для хранения категорий и связанного с ними цвета, а другая для хранения категорий, выбранных пользователем, следующим образом:
# Models
class Category(models.Model):
poller_category = models.CharField(max_length=30)
category_color = models.CharField(max_length=15)
class UserCategoryFilter(models.Model):
user = models.ForeignKey(Account, on_delete=models.CASCADE)
categories_selected = models.ForeignKey(Category, on_delete=models.CASCADE)
Теперь я хочу вывести виджет MultipleSelectWidget, чтобы пользователь мог выбирать категории для использования в качестве фильтра.
# Form
class SelectCategoryForm(forms.ModelForm):
choices = forms.ModelMultipleChoiceField(queryset=Category.objects.all(), widget=forms.CheckboxSelectMultiple)
class Meta:
model = Category
fields = ["poller_category", "category_color"]
Как мне теперь отобразить все категории и связанный с ними цвет в шаблоне?
Мой цикл ниже не выводит ни одной (Примечание: форма передается в контексте, если я использую {{ select_form }}
, то выводится форма по умолчанию)
# Template
<!-- Filter form -->
<div class="filter-form-wrapper">
<form method="post" action=".">
{% csrf_token %}
<div id="form-wrapper">
<ul>
{% for item in filter_form %}
<li style="color: {{ item.category_color }}">{{ item.poller_category }}</li>
{% endfor %}
</ul>
<button class="save-button" type="submit">Save</button>
</div>
</form>
</div>