Ответ 1
ChoiceField
не имеет набора запросов. Вы ищете ModelChoiceField
У меня возникают проблемы с использованием 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())
Строка #subject.... работает, но когда я использую строку ChoiceField (queryset....), я получаю следующую ошибку.
__init__() got an unexpected keyword argument 'queryset'
Любые идеи?
ChoiceField
не имеет набора запросов. Вы ищете ModelChoiceField
если вы хотите заполнить выпадающий список из базы данных, я рекомендую вам передать все значения в одном объекте из views.py в ваш шаблон. Вы можете сделать это следующим образом: 1] выберите все значения из базы данных:
objectlist = ModelName.objects.all()
если вы хотите отсортировать список в выпадающем списке, сделайте следующее:
objectlist = ModelName.objects.all().order_by('fieldname')
если вы хотите выделить список, сделайте следующее:
objectlist = ModelName.objects.distinct('fieldname')
2] Пропустите этот визуализацию этого "objectlist" с помощью шаблона
return render(request, 'template.html', {'objectlist': objectlist})
3] В шаблоне используйте тег select и в элементе пользователя для цикла для итерации по списку объектов.
<select>
{% for element in objectlist %}
<option value={{ element.id }}>{{ element.name }}
</select>
значение в теге параметра зависит от того, что вам нужно обработать в вашем API
Используйте ModelChoiceField Ссылка здесь
ChoiceField не поддерживает запрос
view.py: - это мой файл view.py. И создайте ниже код.
def add_customer(request):
objectlist = Vehicle.objects.values('brand_name').distinct().order_by('brand_name')
if request.method == 'POST':
form = CustomerForm(request.POST)
if form.is_valid():
form.save()
return redirect('/show-customers')
else:
form = CustomerForm()
return render(request, 'add-customer.html', {'form':form, 'objectlist':objectlist})
Customer.html
<select name="prefer_car_model" id="id_prefer_car_model" required>
<option value="0" selected disabled> Select Car model </option>
{% for obj in objectlist %}
<option value="{{ obj.brand_name }}">{{ obj.brand_name }} </option>
{% endfor %}
</select>
Выход