Django ChoiceField populated from database values

I am having problems using a ChoiceField to create a drop down list of values in the database. Here is the snippet of code

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())

The #subject.... line works, but when I use the line ChoiceField(queryset....) I get the following error.

__init__() got an unexpected keyword argument 'queryset'

Any ideas?


ChoiceField doesn't have a queryset. You're looking for ModelChoiceField

if you want to populate dropdown list from database, I'll recommend you to pass all the values in single object from to your template. You can do it this way: 1] fetch all the values from database:

objectlist = ModelName.objects.all()

if you want sorted list in dropdown list, Do this:

objectlist = ModelName.objects.all().order_by('fieldname')

if you want distinctlist, do this:

objectlist = ModelName.objects.distinct('fieldname')

2] Pass this render this 'objectlist' with template

return render(request, 'template.html', {'objectlist': objectlist})

3] In template use a select tag , and in user for loop to iterate over the objectlist.


{% for element in objectlist %}

<option value={{ }}>{{ }}


value in option tag depends on what you need to process in your API

Use the ModelChoiceField Link Here

ChoiceField doesn't support queryset :- This is my file. And create below code.

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():
            return redirect('/show-customers')
        form = CustomerForm()
    return render(request, 'add-customer.html', {'form':form, 'objectlist':objectlist})


<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 %}


Need Your Help

TypeError: '[object HTMLInputElement]' is not a function (evaluating 'elem[ type ]()') in jQuery form.submit()

javascript jquery html forms submit

Has never run into this issue? I'm getting this error in the latest release of jQuery. I tried with version 1.6.2 and there is no issue.

Laravel5: View [app] not found. resources/views/auth/login.blade.php

php laravel laravel-5

I'm using Laravel 5 and I have some problems. When I want to access the login on my subdomain