234 votes

Créer un jeu de requêtes vide par défaut dans les champs de formulaire django

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() la forme sera très lourde. Comment puis-je faire des jeux de requête vides par défaut ?

594voto

marianobianchi Points 1863

Vous pouvez avoir un jeu de requêtes vide en faisant ceci :

MyModel.objects.none()

Bien que je ne sache pas comment allez-vous utiliser ce formulaire, vous pouvez mettre cela comme queryset de votre domaine afin d'obtenir ce dont vous avez besoin...

Vous trouverez plus d'informations ici

3voto

sgauri Points 382

Le commentaire de @ radtek 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 jeu de requêtes 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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X