J'ai ces champs sous forme:
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())
district vient de cliquer sur la ville et la région vient de cliquer sur la région. Avec queryset=MyDistrict.objects.all()
et queryset=MyArea.objects.all()
le formulaire sera très lourd. Comment puis-je rendre les jeux de requêtes vides par défaut?
Merci d'avance
Vous pouvez avoir un queryset vide en faisant ceci:
MyModel.objects.none()
Bien que je ne sache pas comment allez-vous utiliser ce formulaire, vous pouvez le définir comme groupe de requêtes de votre champ afin d'obtenir ce dont vous avez besoin ...
Vous pouvez trouver plus d'informations ici
@ radtek's comment devrait être une réponse car il est utile dans des scénarios similaires, mais avec une approche différente de la réponse acceptée.
Si votre requête change avec l'URL dans votre vue.
Je prolonge la réponse avec l'exemple que j'ai utilisé:
def my_view(request):
...
form = YourForm(initial={'field1':value1, 'field2':value2})
form.fields['field3'].queryset = YourModel.objects.filter('foo'=bar)