79 votes

Filtre de requête Django avec colonne variable

J'essaie de filtrer un ensemble de requêtes en utilisant

info=members.filter(name__contains=search_string)

Le problème que j'ai est que je ne sais pas quel champ l'utilisateur veut rechercher à l'avance, donc je dois remplacer 'name' par une variable comme dans

variable_column = 'name'
search_type = 'contains'
filter = variable_column + '__' + search_type
info=members.filter(filter=search_string)

Comment je fais ça ?

Riche

188voto

Yuji 'Tomita' Tomita Points 46106

On y est presque.

members.filter(**{'string__contains': 'search_string'})

Pour comprendre ce qu'il fait, google around : ) Comprendre les kwargs en Python

** étend les paires clé/valeur du dictionnaire à l'argument mot-clé - paires de valeur.

Pour adapter votre exemple à la solution :

variable_column = 'name'
search_type = 'contains'
filter = variable_column + '__' + search_type
info=members.filter(**{ filter: search_string })

-1voto

Viraj.Hadoop Points 154

Syntaxe :

model_name.objects.filter(column_name='value')

Ex : Dans mon scénario, je voulais découvrir tous les enregistrements avec le statut complété à partir de la table Student.

Student.objects.filter(status="completed")

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