4 votes

Joker dans Django (Objects.filter)

Existe-t-il un caractère générique dans Django à utiliser dans un filtre Objects.filter ?

Par exemple, existe-t-il un personnage qui équivaut à faire ceci :

Prices.objects.filter(a = example1
                     ,b = example2
                    #,c = example3
)

Par exemple, au lieu de commenter c, je ne pourrais pas mettre c = WILDCARD ou c = *... vous voyez le genre. Merci.

EDIT : Comme dans, si vous avez une grande liste d'attributs qui peuvent être recherchés et que vous voulez seulement en rechercher quelques uns, vous n'allez pas exactement avoir des tas de fonctions qui font ces recherches spécifiques. J'ai besoin d'une sorte de caractère qui indique à Django et ensuite à SQL "ce champ n'a pas d'importance, je veux tout ici"... ne pas inclure le champ (comme dans l'exemple) crée juste un tas de fonctions.

10voto

shanyu Points 4775

Essayez d'utiliser contient y icontains .

Voici un exemple :

Foo.objects.filter(name__icontains = 'hello') #fetches all whose name field contains 'hello'

7voto

Gabriel Ross Points 2906

La seule chose à faire est une dictée de noms d'attributs et de valeurs avec lesquels vous filtrez dynamiquement :

filters = {"a": "example1", "b": "example2", "c": "example3" }
prices = Prices.objects.filter(**filters)

Ensuite, vous définissez les filtres dictés au moment de l'exécution, en ajoutant ou en supprimant des paires clé/val selon le cas. Que **filters est un argument de mot-clé. Vérifiez ici pour plus d'informations :

http://www.nomadjourney.com/2009/04/dynamic-django-queries-with-kwargs/

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