Documentation en ligne

Utiliser les filtres de requête

Les filtres de requêtes se distinguent des autres filtres par leur capacité à interroger et remonter des données comme on pourrait le faire avec un langage de base de donnée de type SQL.

Chercher dans les demandes ou les fiches

Ils permettent de faire des requêtes sur les demandes et les fiches, en utilisant respectivement :

  • forms|objects:"slug-du-formulaire" pour les demandes
  • cards|objects:"slug-du-modele-de-fiche" pour les fiches.
forms|objects:"slug-du-formulaire"|filter_by:"nom"|filter_value:"entrouvert"

permet de chercher, dans un formulaire dont le slug est « slug-du-formulaire », si la valeur « entrouvert » est déjà présente dans un champ dont l'identifiant est « nom ».

Ou, pour tester une valeur d'un champ :

forms|objects:"slug-du-formulaire"|filter_by:"nom"|filter_value:form_var_nom
forms|objects:"slug-du-formulaire"|filter_by:"nom"|filter_value:form_var_autre_chose

À noter : pour tester la valeur d'un champ liste, il faut passer la valeur et non le libellé, soit :

forms|objects:"slug-du-formulaire"|filter_by:"liste"|filter_value:form_var_liste_raw
forms|objects:"slug-du-formulaire"|filter_by:"liste"|filter_value:form_var_autre_liste_raw
forms|objects:"slug-du-formulaire"|filter_by:"liste"|filter_value:2

Pour désigner le formulaire en cours, on peut remplacer

forms|objects:"slug-du-formulaire" simplement par form_objects

Récupérer la valeur d'un champ

Appliqués à une fiche cette fois, ces filtres peuvent permettre de faire remonter la valeur d'un champ particulier pour une fiche donnée :

cards|objects:"slug-modele-fiche"|filter_by:"nom"|filter_value:"entrouvert"|first|get:"telephone"

permet de récupérer le contenu du champ dont l'identifiant est « telephone », dans un modèle de fiche dont le slug est « slug-modele-fiche », pour la première fiche contenant la valeur « entrouvert » dans le champ dont l'identifiant est « nom ».

Filtres supplémentaires

  • |count retourne le nombre de résultats de la requête
  • |done permet d'obtenir les demandes terminées uniquement.
  • |exclude_value permet d'exclure des résultats une certaine valeur.
  • |exclude_self permet d'exclure la demande de départ des résultats (fonctionne uniquement avec form_objects).
  • |filter_by_number permet de filtrer les résultats sur un numéro de demande.
  • |filter_by_status:"Libellé du statut" permet de filtrer les résultats sur le statut donné.
  • |filter_by_user:form_user permet de filtrer les résultats aux fiches et demandes liées à un usager précis.
  • |is_empty permet de vérifier que le contenu d'une requête est vide.
  • |order_by:"..." permet de trier les résultats sur le champ dont l'identifiant est passé en paramètre. Par exemple xxx|order_by:"nom" pour trier sur le champ dont l'identifiant est "nom".
  • |pending permet d'inclure uniquement les demandes ouvertes dans une requête sur des demandes.
  • |same_user permet de limiter les résultats aux demandes posées par le même utilisateur que la demande de départ.
  • |set_geo_center permet de déterminer le centre à utiliser pour le filtre géographique appliqué à une requête.
Exemple d'utilisation du filtre |count :
{{form_objects|filter_by:"nom"|filter_value:"entrouvert"|count}} --> retourne un entier

Une condition s'écrirait ainsi :

{% if form_objects|filter_by:"nom"|filter_value:"entrouvert"|count == 0 %}Aucune demande{% endif %}

 

Dernière mise à jour le 15 septembre 2021 06:43 — Éditer