Documentation en ligne

Utiliser les filtres de requêtes dans Combo (portail usager et portail agent)

Cette page suppose une connaissance du fonctionnement des filtres de requête dans w.c.s. Si ce n'est pas encore le cas, il est recommandé de commencer par lire Utiliser les filtres de requête.

L'utilisation des filtres de requête dans Combo est un peu différente que dans w.c.s. Par défaut, la brique logicielle Combo n'a pas accès à toutes les informations des formulaires et des fiches. Il faut donc indiquer dans la requête quelles informations rendre disponibles, à l'aide de filtres spécifiques include_*.

Identifier les données disponibles avec l'outil de test de gabarit

⚙️ Accès dans le BO :
Édition «â€ŻPortail » > Outil de test de gabarit

Avant de rédiger une requête, il peut être utile de visualiser exactement quelles données sont renvoyées par un filtre include_* donné.

L'outil de test de gabarit de Combo permet de le faire facilement avec le filtre |pprint pour afficher les données au format JSON, ce qui donne une vue claire et structurée de tout ce qui est disponible.
Exemple avec la requête : 

{{ cards|objects:"fruits-et-legumes"|include_fields|first|pprint|safe }}

Capture d'écran de l'outil de test de gabarit

Attention : dans l'outil de test de gabarit, le filtre |filter_by_user ne retourne pas de résultat.

Quels filtres permettent de récupérer quelles données ?

Les données disponibles par défaut

Sans filtre include_*, une requête renvoie un ensemble de métadonnées de base : résumé, date de création, identifiant, etc.
Ces données ne comprennent pas les valeurs saisies dans les champs du modèle de fiche ou du formulaire, ni les informations du workflow.

{{ cards|objects:"fruits-et-legumes"|first|pprint|safe }}

retournera :

{'digest': 'Courgette (Légumes) Verte',
 'display_id': '41-84',
 'display_name': 'Aliments - liste - n°41-84',
 'id': '84',
 'internal_id': '84',
 'last_update_time': '2026-02-13T14:39:39',
 'receipt_time': '2026-02-13T14:39:39',
 'text': 'Courgette (Légumes) Verte',
 'url': 'https://demarches-IDENTIFIANT.test.entrouvert.org/backoffice/data/fruits-et-legumes/84/',
 'uuid': '8c836b20-5a49-4041-8049-24f98ce2ef38'}

Les autres filtres

Chaque filtre include_* enrichit la réponse avec des données supplémentaires. L'objectif est de ne récupérer que les données nécessaires pour des raisons de performance.

Filtre Données renvoyées
|include_fields Valeurs des champs du modèle de fiche
|include_workflow_data Quelques données issues du workflow
|include_workflow Données de include_workflow_data + données de traitement et statut
|include_evolution Données de include_workflow_data + historique des changements de statut
|include_roles Données de include_workflow_data + rôles assignés aux fonctions
|include_submission Données de include_workflow_data + informations sur l'enregistrement de la fiche/du formulaire
{{ cards|objects:"fruits-et-legumes"|include_fields|first|pprint|safe }}

retournera :

{'api_url': 'https://demarches-aecuvillon.test.entrouvert.org/api/cards/fruits-et-legumes/84/',
 'backoffice_url': 'https://demarches-aecuvillon.test.entrouvert.org/backoffice/data/fruits-et-legumes/84/',
 'criticality_level': 0,
 'digest': 'Courgette (Légumes) Verte',
 'display_id': '41-84',
 'display_name': 'Aliments - liste - n°41-84',
 'fields': {'actif': True,
            'ajout_d_un_champ_pour_test': None,
            'carte': None,
            'couleur': 'Verte',
            'date': '2026-04-29',
            'image': None,
            'libelle': 'Courgette',
            'type_aliment': 'Légumes',
            'type_aliment_raw': '2',
            'type_aliment_structured': {'id': 2,
                                        'libelle': 'Légumes',
                                        'text': 'Légumes'}},
 'id': '84',
 'internal_id': '84',
 'last_update_time': '2026-04-30T11:02:59',
 'receipt_time': '2026-02-13T14:39:39',
 'text': 'Courgette (Légumes) Verte',
 'url': 'https://demarches-aecuvillon.test.entrouvert.org/backoffice/data/fruits-et-legumes/84/',
 'uuid': '8c836b20-5a49-4041-8049-24f98ce2ef38'}

Accéder aux données renvoyées : quand utiliser |get ou |getlist ?

Une requête retourne soit une seule fiche/demande, soit une liste de fiches/demandes. C'est ce qui détermine le filtre à utiliser pour accéder aux données :

  • |get:"valeur" s'utilise pour récupérer une seule fiche/demande (après |first).
  • |getlist:"valeur" s'utilise pour récupérer une liste de fiches/demandes.

La valeur retournée peut elle-même être un dictionnaire. Dans ce cas, on enchaîne un |get ou un |getlist supplémentaire pour descendre d'un niveau.

Exemple pour récupérer le libellé d'une fiche en filtrant selon son identifiant :

{{ cards|objects:"fruits-et-legumes"|include_fields|filter_by_identifier:"3"|first|get:"fields"|get:"libelle" }}

Autres exemples

Récupérer la valeur d'un champ

Voici un exemple d'une requête dans combo pour récupérer la valeur du champ Nom dans 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" }}

Filtrer sur une donnée de traitement

{{ cards|objects:"fruits-et-legumes"|include_fields|filter_by:"donnees_de_traitement"|filter_value:"Administrateur fonctionnel"|getlist:"fields"|getlist:"libelle"|join:"," }}

Filtrer sur un champ de type Date

Les filtres suivants permettent de filtrer les demandes ou fiches selon la valeur d'un champ de type date :

  • |is_today — date du jour
  • |is_yesterday — jour précédent
  • |is_tomorrow — jour suivant
  • |is_this_week — semaine en cours
{{ forms|objects:"inscription"|include_fields|filter_by:"date"|is_this_week|getlist:"fields"|getlist:"libelle"|join:"," }}

Cet exemple retourne le libellé de toutes les demandes du formulaire «â€Żinscription » dont le champ date contient une date dans la semaine en cours.

Définir une durée de cache

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.

Obtenir la liste des rôles de l'utilisateur connecté

Que l'on pourrait stocker dans une variable de page.

{% for group in user.groups.all %}{{ group|safe }}, {% endfor %}

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 30/04/2026 12:36 — Éditer