Отображение выбранного значения при рендеринге формы в django

У меня имеется следующая форма (forms.py):

class SummarySearchForm(forms.Form):
    area = forms.ModelChoiceField(
            label="Регион",
            queryset=City.objects.all().select_related("parent_city"),
            required=False,
            widget=forms.Select
        )

И во views.py:

form = SummarySearchForm(request.data)

При этом в форме отображается весь список городов с сортировкой из модели City. Мне необходимо, чтобы так же отображался весь список городов, но при рендере поля было по умолчанию задано мое значение. Вот такой код не работает (добавлено поле initial):

class SummarySearchForm(forms.Form):
    area = forms.ModelChoiceField(
            label="Регион",
            queryset=City.objects.all().select_related("parent_city"),
            required=False,
            initial=City.objects.get(hh_catalog_city_id=1661),
            widget=forms.Select
        )

Ожидалось, что будет список, с уже выбранной нужной областью, но при этом была бы возможность выбрать любую другую. Прошу помочь решить мой вопрос. Заранее спасибо!

Получилось реализовать функционал следующим образом:

if request.data == {}:
    form = SummarySearchForm(initial={"area": City.objects.get(hh_catalog_city_id=1661)})
else:
    form = SummarySearchForm(request.data)

В целом, выглядит как костыль. Возможно причина в том, что у меня эта вьюха (функция) работает сразу с GET и POST запросами. Возможно удалось бы этого избежать, если бы вьюха была в виде класса, где каждый вид запроса обрабатывался бы в своей функции.

Вернуться на верх