django自定义表单选择标记

Dar*_*ech 3 forms django

我有一个表单,我想输出为自定义HTML.我的forms.py:

from django import forms

from cdrs.models import Localitymayor

class SearchForm(forms.Form):
    genus = forms.CharField(max_length=100)
    species = forms.CharField(max_length=100)
    island_group = forms.ModelChoiceField(queryset=Locality.objects.values_list('islandgroup', flat=True).distinct('islandgroup').exclude(islandgroup="n/a").order_by('islandgroup'))
    island_name = forms.ModelChoiceField(queryset=Locality.objects.values_list('islandname', flat=True).distinct('islandname').exclude(islandname="n/a").order_by('islandname'))
Run Code Online (Sandbox Code Playgroud)

Django文档中,它演示了如何输出自定义html.但是,下面的模板代码显然不适用于选择字段:

<form action="/search/" method="post">
{{ form.non_field_errors }}
<div class="fieldWrapper">
    {{ form.genus.errors }}
    <label for="id_genus">Genus:</label>
    {{ form.genus }}
</div>
...
<div class="fieldWrapper">
    {{ form.island_group.errors }}
    <label for="id_island_group">Island Group:</label>
    {{ form.island_group }}
</div>
...
</form>
Run Code Online (Sandbox Code Playgroud)

如何控制ModelChoiceFields的选择字段的输出?

Yuj*_*ita 9

我想你可以自己构建html.

<select name="{{ form.island_group.name }}">
    {% for instance in form.island_group.field.queryset %}
        <option value="{{ instance.pk }}">{{ instance.name }} yarr</option>
    {% endfor %}
</select>
Run Code Online (Sandbox Code Playgroud)