Documentation en ligne

Utiliser les filtres de requĂŞtes

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:"form_var_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:","

Le filtre |getlistdict fait la mĂŞme chose mais accepte plusieurs clĂ©s et retourne une liste de dictionnaires, par exemple :

card|objects|getlistdict:"form_var_prenom","form_var_nom" → [{"form_var_prenom": "...", "form_var_nom": "..."}, ...].

Il permet de renommer les clés, en précisant le nom souhaité derrière deux points, ex:

|getlistdict:"form_var_prenom:prenom,form_var_nom:nom" → [{"prenom": "...", "nom": "..."}, ...].

Le filtre |regroup_as_dict permet de prendre une telle liste de dictionnaires pour les regrouper selon une clĂ©, par exemple,

cards|objects:"xxx"|getlistdict:"form_identifier:id,form_var_valeur:val"|regroup_as_dict:"id" → {"id1": {"val": "..."}, "id2": {"val": "..."}, ...}

Filtres de comparaison

Les filtres vus jusque ici ne permettent que de vĂ©rifier la correspondance stricte Ă  une valeur : « donne-moi toutes les fiches dans lesquelles le nom est "Dupont" ». Les filtres de comparaison permettent de demander des choses plus complexes comme : « donne moi toutes les fiches dont le prix est supĂ©rieur Ă  100 ». Ces filtres sont  :
  • |equal|filter_value:"xxx" : renvoie les demandes/fiches pour lesquelles le champ testĂ© correspond exactement Ă  la valeur xxx
  • |i_equal|filter_value:"xxx" : renvoie les demandes/fiches pour lesquelles le champ testĂ© correspond Ă  la valeur xxx, en ignorant les Ă©ventuelles diffĂ©rences de casse.
  • |not_equal|filter_value:"xxx" : renvoie les demandes/fiches pour lesquelles le champ testĂ© est diffĂ©rent de la valeur xxx
  • |less_than|filter_value:"xxx" : renvoie les demandes/fiches pour lesquelles le champ testĂ© est infĂ©rieur Ă  la valeur xxx
  • |greater_than|filter_value:"xxx" : renvoie les demandes/fiches pour lesquelles le champ testĂ© est supĂ©rieur Ă  la valeur xxx
  • |less_than_or_equal|filter_value:"xxx" : renvoie les demandes/fiches pour lesquelles le champ testĂ© est infĂ©rieur ou Ă©gal Ă  la valeur xxx
  • |greater_than_or_equal|filter_value:"xxx" : renvoie les demandes/fiches pour lesquelles le champ testĂ© est supĂ©rieur ou Ă©gal Ă  la valeur xxx
  • |in|filter_value:"xxx|yyy" : renvoie les demandes/fiches pour lesquelles le champ testĂ© correspond Ă  la valeur xxx ou Ă  la valeur yyy
  • |not_in|filter_value:"xxx|yyy" : renvoie les demandes/fiches pour lesquelles le champ testĂ© ne correspond ni Ă  la valeur xxx ni Ă  la valeur yyy
  • |icontains|filter_value:"xxx" : renvoie les demandes/fiches pour lesquelles la valeur du champ testĂ© contient xxx, en ignorant les Ă©ventuelles diffĂ©rences de casse. Ă€ la diffĂ©rence de |i_equal, ce filtre retournera les demandes dont une sous-chaine correspond, ex : si "xxx" est "Rue", les champs "rue des Cerisiers", "rue des Lilas", "avenue de Rueil-Malmaison", mais pas "avenue de Chatou".
  • |absent : renvoie les demandes/fiches pour lesquelles le champ testĂ© n'est pas rempli
  • |existing : renvoie les demandes/fiches pour lesquelles le champ testĂ© est rempli
  • |between|filter_value:"1|5" : renvoie les demandes/fiches pour lesquelles le champ testĂ© est supĂ©rieur ou Ă©gal Ă  1 et infĂ©rieur Ă  5
Cette expression va renvoyer l'ensemble des demandes pour lesquelles le revenu est infĂ©rieur Ă  2000 :
{{forms|objects:"test"|filter_by:"revenu"|less_than|filter_value:"2000"}}

Filtres pour les champs Ă  choix multiples

|filter_value:"1|2" : Permet de filtrer les demandes ou fiches pour lesquelles le champ testĂ© (de type liste Ă  choix multiple) contient au moins une des valeurs spĂ©cifiĂ©es (ici, 1 et/ou 2).

Filtres supplémentaires

  • |count retourne le nombre de rĂ©sultats de la requĂŞte
  • |done permet d'obtenir les demandes terminĂ©es uniquement. C'est Ă  dire les demandes qui sont dans un statut final.
  • |exclude_value:"..." permet d'exclure des rĂ©sultats la valeur spĂ©cifiĂ©e en paramètre.
  • |exclude_self permet d'exclure la demande de dĂ©part des rĂ©sultats (fonctionne uniquement avec form_objects).
  • |filter_by_distance:xxx permet de filtrer les demandes/fiches selon leur distance Ă  un point (de la demande/fiche Ă  l'origine de la requĂŞte si form_objects est utilisĂ©, d’un point arbitraire si renseignĂ© par la filtre |set_geo_center). La distance doit ĂŞtre exprimĂ©e en mètres. C’est Ă©quivalent Ă  |filter_by:"distance"|filter_value:xxx.
  • |filter_by_internal_id:xxx permet de filtrer sur l’identifiant interne d'une demande/fiche (Ă  la diffĂ©rence de |filter_by_number). Pour reprendre l'exemple de la ligne prĂ©cĂ©dente, l'identifiant interne sera 35. C'est Ă©quivalent Ă  |filter_by:"internal_id"|filter_value:xxx.
  • |filter_by_status:"LibellĂ© du statut" permet de filtrer les rĂ©sultats sur le statut donnĂ©; c’est Ă©quivalent Ă  |filter_by:"status"|filter_value:"LibellĂ© du statut".
  • |filter_by_number:xxx permet de filtrer les rĂ©sultats sur le numĂ©ro complet d'une demande/fiche. Le numĂ©ro complet se prĂ©sente sous une forme 2-35; c’est Ă©quivalent Ă  |filter_by:"number"|filter_value:xxx.
  • |filter_by_user:form_user permet de limiter les rĂ©sultats aux fiches et demandes liĂ©es Ă  un usager prĂ©cis; c’est Ă©quivalent Ă  |filter_by:"user"|filter_value:form_user. En complĂ©ment, le filtre accepte Ă©galement l’adresse Ă©lectronique de l’usager ainsi que l’identifiant unique qui lui est associĂ© (uuid).
  • |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:xxx permet de dĂ©finir le centre Ă  utiliser pour le filtre gĂ©ographique appliquĂ© Ă  une requĂŞte (|filter_by_distance); le paramètre attendu est une demande/fiche dont le gĂ©ocodage sera donc utilisĂ© comme rĂ©fĂ©rence.
  • |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 %}

Utilisation des filtres de requĂŞte dans combo

L'utilisation des filtres de requête dans combo est un peu différente que dans w.c.s. En effet par défaut combo n'a pas accès à toutes les informations des formulaires et fiches. Il faut donc lui dire dans la requête de rendre disponible ces informations. Typiquement cela se traduit par l'utilisation des filtres "include_fields", "include_workflow" et get:"fields".

Voici un exemple d'une requĂŞte dans combo pour rĂ©cupĂ©rer le champ "form_var_nom" d'une fiche. Le modèle de fiche ciblĂ© par la requĂŞte est liĂ© Ă  la page combo, ce qui permet d'obtenir la variable "fiche_id" :

{{ cards|objects:"id_modele_fiche"|include_fields|filter_by:"internal_id"|filter_value:fiche_id|first|get:"fields"|get:"nom" }}

Le filtre |cache_duration permet de dĂ©finir une durĂ©e de cache dans les pages du portail. Par exemple, pour une requĂŞte affichant une fiche : {{ cards|objects:"identifiant"|cache_duration:30 }}. La durĂ©e est exprimĂ©e en secondes.

Une suggestion ?

Écrivez-nous
Proposez une amélioration pour la documentation

Vous n'avez pas trouvé ce que vous cherchez ?

Questionnez la communauté
Obtenez des réponses auprès des membres du club utilisateurs

Contactez le support
Ouvrez un ticket dans votre espace projet pour que nous puissions vous aider

Dernière mise à jour le 10/02/2026 15:31 — Éditer