Django ChoiceField заполняется из значений базы данных
у меня возникли проблемы с использованием ChoiceField создание выпадающего списка значений в базе данных. Вот фрагмент кода
from django import forms
from testplatform.models import ServiceOffering
class ContactForm(forms.Form):
subject = forms.ChoiceField(queryset=ServiceOffering.objects.all())
#subject = forms.ModelMultipleChoiceField(queryset=ServiceOffering.objects.all())
в #тему.... строка работает, но когда я использую строку ChoiceField (queryset....) Я получаю следующую ошибку.
__init__() got an unexpected keyword argument 'queryset'
какие идеи?
3 ответов
если вы хотите заполнить выпадающий список из базы данных, я рекомендую вам передать все значения в одном объекте из views.py к вашему шаблону. Ты можешь сделать это так.: 1] получить все значения из базы данных:
objectlist = ModelName.objects.all()
если вы хотите отсортировать список в раскрывающемся списке, сделайте следующее:
objectlist = ModelName.objects.all().order_by('fieldname')
если вы хотите distinctlist, сделайте это:
objectlist = ModelName.objects.distinct('fieldname')
2] передайте этот рендер этот "objectlist" с шаблоном
return render(request, 'template.html', {'objectlist': objectlist})
3] в шаблоне используйте тег select , и в user for loop для итерации по objectlist.
<select>
{% for element in objectlist %}
<option value={{ element.id }}>{{ element.name }}
</select>
значение в теге опции зависит от того, что вам нужно обработать в вашем API
использовать ModelChoiceField Ссылка Здесь
ChoiceField не поддерживает queryset