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 ».

Pour récupérer l'identifiant interne, on utilise "form_internal_id" :

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

Récupérer une liste

|getlist va permettre de récupérer un objet liste plutôt qu'une seule valeur. Pour un modèle fiche « enfant » on pourra récupérer la liste des noms en faisant :
cards|objects:"enfant"|getlist:"nom"
Il est possible d'afficher la liste des nom séparés par des virgules en faisant
cards|objects:"enfant"|getlist:"nom"|join:","

Filtres supplémentaires

  • |count retourne le nombre de résultats de la requête
  • |done permet d'obtenir les demandes terminées uniquement.
  • |duration permet afficher sous forme de texte une durée exprimée en minutes, par exemple {{form_var_NOMBRE-MINUTES|duration}} → 2h05
  • |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_internal_id permet de filtrer sur l’identifiant interne d'une demande/fiche (à la différence de |filter_by_number).
  • |filter_by_number permet de filtrer les résultats sur un numéro de demande/fiche.
  • |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.
  • |with_custom_view:"..." permet d'appliquer les critères de la vue en question.
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 5 juillet 2022 09:34 — Éditer