Имеется простая модель:
class ModelPi(models.Model):
material = models.ForeignKey(Material, on_delete=models.PROTECT)
title = models.CharField(max_length=50, unique=True)
is_active = models.BooleanField(default=True)
priority = models.IntegerField(default=0, verbose_name='Приоритет сортировки')
модель материалов ещё проще:
class Material(models.Model):
title = models.CharField(max_length=50, verbose_name="Материал", unique=True)
Имеется класс формы:
class ModelPiForm(forms.ModelForm):
class Meta:
model = ModelPi
fields = ['title', 'material', 'priority', 'is_active']
labels = {
'title': 'Название Модели',
'material': 'Материал',
'priority': 'Приоритет сортировки',
'is_active': 'Активна (включена)',
}
help_texts = {
'priority': 'используется для отображения порядка при выборе, чем больше число, тем выше в списке',
'is_active': 'если выключено, то не показывается в каталоге',
}
Т.е. мы видим, что у нас есть внешний ключ на материалы.
Но шаблон очень хитрый и использует свои классы, JS и прочие заморочки. Поэтому я вывожу все поля вручную. Например то же поле title я вывожу подобным образом:
<div class="md-form mb-0">
<input type="text" id="title" name="title" class="form-control"
value="{{ form.title.value|default_if_none:'' }}">
<label for="title" class="">{{ form.title.label }}</label>
</div>
Но
Как через {% for ... %} вывести значения материала например в секции SELECT ?
<select class="mdb-select md-form" id="material" name="material">
<option value="" disabled selected>Выберите материал, нажав здесь</option>
{% for material in form.material %}
<option value="{{ material.id }}">{{ material.title }}</option> ### так не работает!
{% endfor %}
</select>