J'ai trois colonnes (var1, va2 et var3) dans ma base de données.Utilisation de caractères génériques pour faire un filtre de queryset dans Django
Sur la page html, un utilisateur peut entrer des valeurs pour var1, var2 ou var3 ou une combinaison des trois variables (par exemple fournir des données uniquement pour var1 et var3 ou var2 et var3).
Ma requête de recherche est:
Rule.objects.filter(var1=user_var1, var2=user_var2, var3=user_var3,)
Si l'utilisateur entre des valeurs pour les trois variables, cela est assez simple.
Si l'utilisateur saisit des valeurs pour deux ou une des variables, je voudrais que le filtre de jeu de requête corresponde uniquement aux colonnes pour lesquelles les utilisateurs ont saisi des valeurs. Par exemple: les utilisateurs ont entré des données pour var2 et var3. La recherche résultant serait:
Rule.objects.filter(var2=user_var2, var3=user_var3,)
Mais est-il un moyen de garder les trois variables dans le code du filtre et donc quelque chose comme:
if user_var1 = null, then user_var1=[wildcard or all]
Rule.objects.filter(var1=user_var1, var2=user_var2, var3=user_var3,)
Pourquoi faites-vous d'abord un qs puis filtrez. Pourquoi ne pas le filtrer directement à travers la dict? –
@HC vous pouvez, j'essayais juste d'être plus explicite. Voir le code mis à jour. Merci! –
Merci. Je pensais que cela pourrait accélérer le code. Merci! –