Это достаточно просто сделать, переопределив __init__
в подклассе формы, который вы используете. Он должен одинаково хорошо работать на ModelForm. Я не уверен, как вы заполняете выбор, основываясь на этом вопросе.
class ChoiceForm(Form):
choice = ModelChoiceField(queryset=MyModel.objects.all())
def __init__(self, *args, **kw):
super(ChoiceForm, self).__init__(*args, **kw)
# Add to choices iterator
choice_field = self.fields['choice']
choice_field.choices = list(choice_field.choices) + [(0, 'More Options')]
Это дает следующее при рендеринге с тегами <p>
:
<p>
<label for="id_choice">Choice:</label>
<select name="choice" id="id_choice">
<option value="" selected="selected">---------</option>
<option value="0">More Options</option>
</select>
</p>
Имейте в виду, что выбор этих полей будет исправлен после того, как вы его создадите. Обычный ModelChoiceField автоматически обновит свой выбор, если результаты запроса, который вы передали, будут изменены.