Создать пустой queryset по умолчанию в полях формы django

у меня есть эти поля в форме:

city = forms.ModelChoiceField(label="city", queryset=MyCity.objects.all())
district = forms.ModelChoiceField(label="district", queryset=MyDistrict.objects.all())
area = forms.ModelChoiceField(label="area", queryset=MyArea.objects.all())

район приходит от щелчка по городу и области приходит от щелчка по области. С queryset=MyDistrict.objects.all() и queryset=MyArea.objects.all() форма будет очень тяжелой. Как сделать запросы пустыми по умолчанию?

спасибо заранее

2 ответов


вы можете иметь пустой queryset, делая это:

MyModel.objects.none()

хотя я не знаю, как вы собираетесь использовать эту форму, вы можете поместить это в качестве queryset вашего поля, чтобы получить то, что вам нужно...

вы можете найти более подробную информацию здесь


@radtek это комментарий должен быть ответ, поскольку он полезен в аналогичных сценариях, но с другим подходом, чем принятый ответ.

Если ваш queryset изменяется с url-адресом в вашем представлении.

я расширяю ответ примером, как я использовал:

def my_view(request):
    ...
    form = YourForm(initial={'field1':value1, 'field2':value2})
    form.fields['field3'].queryset = YourModel.objects.filter('foo'=bar)