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 ответов


ChoiceField не имеет queryset. Вы ищете ModelChoiceField


если вы хотите заполнить выпадающий список из базы данных, я рекомендую вам передать все значения в одном объекте из 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