Utiliser les filtres de requêtes dans Combo (portail usager et portail agent)
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 }}

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
