Django Форма ChoiceField как показать больше названий полей
У меня есть "маленькая" проблема. Я хочу получить ВСЕ поле ModelChoiced и не знаю, как это сделать.
Мои части кода
models.py
class Materials(models.Model):
material = models.CharField(max_length=20,unique=True)
density = models.PositiveSmallIntegerField()
price = models.PositiveSmallIntegerField()
def __str__(self):
return self.material
class Items(models.Model):
article_number = models.CharField(max_length=20,blank=True,null=True)
quantity = models.PositiveSmallIntegerField(blank=True,null=True)
material = models.ForeignKey('Materials',on_delete=models.PROTECT,blank=True,null=True)
surface =models.CharField(max_length=20,blank=True,null=True)
.
.
.
forms.py
class ItemsForm(forms.ModelForm):
class Meta:
model = models.Items
fields = "__all__"
views.py
def new(request):
items_form = forms.ItemsForm()
context = {
'items_form':items_form,
}
return render(request,"new.html",context)
new.html
{{ items_form.article_number }}
{{ items_form.quantity }}
{{ items_form.material }}
{{ items_form.surface}}
.
.
.
Теперь, при открытии ссылки, сгенерированный код html материала имеет вид
<select name="material" id="id_material">
<option value selected>---------</option>
<option value="id_1">"material_1"</option>
<option value="id_2">"material_2"</option>
<option value="id_3">"material_3"</option>
</select>
Я хочу представить все значения поля Materials на каждом входе, как это:
<select name="material" id="id_material">
<option value selected>---------</option>
<option value="id_1">"material_1"</option>
<option value="id_2">"material_2"</option>
<option value="id_3">"material_3"</option>
</select>
<select name="density" id="id_density">
<option value selected>---------</option>
<option value="id_1">"density_1"</option>
<option value="id_2">"density_2"</option>
<option value="id_3">"density_3"</option>
</select>
<select name="price" id="id_price">
<option value selected>---------</option>
<option value="id_1">"price_1"</option>
<option value="id_2">"price_2"</option>
<option value="id_3">"price_3"</option>
</select>
Я попробовал добавить эти строки в ItemsForm, но этот метод не получает 'id', только значения:
def __init__(self, *args, **kwargs):
super(ItemsForm, self).__init__(*args, **kwargs)
self.fields['density'] = forms.ModelChoiceField(queryset=models.Materials.objects.values_list('density',flat=True))