Dodock offre des fonctionnalités puissantes pour filtrer et interroger les données de votre système. Cette page explique comment utiliser les opérateurs avancés de filtrage, notamment l'opérateur between récemment ajouté.
betweenL'opérateur between permet de filtrer des enregistrements dont une valeur se situe entre deux bornes. Cet opérateur est particulièrement utile pour les champs de type date, heure ou numérique.
# Filtrer les enregistrements où le champ 'montant' est compris entre 100 et 500
filters = [
["Facture", "montant", "between", [100, 500]]
]
# Filtrer les enregistrements où la date est comprise entre deux dates
filters = [
["Facture", "date", "between", ["2026-01-01", "2026-12-31"]]
]
L'opérateur between est particulièrement utile pour les rapports périodiques. Voici quelques exemples concrets :
Pour obtenir toutes les factures émises au cours du deuxième trimestre 2026 :
from frappe import get_list
factures = get_list(
"Facture",
filters=[
["date", "between", ["2026-04-01", "2026-06-30"]],
["statut", "=", "Payée"]
],
fields=["nom", "client", "montant_total", "date"]
)
Pour les champs de type datetime, vous pouvez spécifier des plages horaires précises :
commandes = get_list(
"Commande",
filters=[
["date_creation", "between", ["2026-08-01 08:00:00", "2026-08-01 18:00:00"]]
]
)
::: info
Remarque importante : Lorsque vous utilisez des chaînes de caractères au format ISO-8601 (comme "2026-08-01T12:00:00"), le système préserve la composante horaire. Cependant, pour les dates simples (sans heure), le système considère automatiquement la borne inférieure comme le début de la journée (00:00:00) et la borne supérieure comme la fin de la journée (23:59:59).
:::
L'opérateur between peut être utilisé dans les rapports personnalisés pour créer des filtres dynamiques :
betweenAAAA-MM-JJ pour éviter toute ambiguïtéAAAA-MM-JJ HH:MM:SS ou le format ISO-8601 AAAA-MM-JJTHH:MM:SSbetween peut être combiné avec d'autres opérateurs pour des requêtes complexesVoici un exemple complet montrant comment utiliser l'opérateur between pour analyser les ventes d'un mois spécifique :
from frappe import get_all
# Obtenir toutes les factures payées du mois d'août 2026
debut_mois = "2026-08-01"
fin_mois = "2026-08-31"
factures = get_all(
"Facture",
filters=[
["date", "between", [debut_mois, fin_mois]],
["statut", "=", "Payée"]
],
fields=["nom", "client", "montant_total", "date"],
order_by="date asc"
)
# Calculer le total des ventes
total_ventes = sum(f.montant_total for f in factures)
# Afficher les résultats
print(f"Nombre de factures : {len(factures)}")
print(f"Total des ventes : {total_ventes} €")
# Regrouper par client
from collections import defaultdict
ventes_par_client = defaultdict(float)
for facture in factures:
ventes_par_client[facture.client] += facture.montant_total
print("\nVentes par client :")
for client, montant in ventes_par_client.items():
print(f"- {client}: {montant} €")
En plus de between, Dodock offre plusieurs autres opérateurs de filtrage :
| Opérateur | Description | Exemple |
|---|---|---|
= | Égal à | ["statut", "=", "Payée"] |
!= | Différent de | ["statut", "!=", "Annulée"] |
> | Supérieur à | ["montant", ">", 1000] |
>= | Supérieur ou égal à | ["montant", ">=", 1000] |
< | Inférieur à | ["montant", "<", 1000] |
<= | Inférieur ou égal à | ["montant", "<=", 1000] |
like | Contient une chaîne | ["client", "like", "%Maison%"] |
in | Dans une liste de valeurs | ["statut", "in", ["Payée", "Partiellement payée"]] |
not in | Pas dans une liste | ["statut", "not in", ["Annulée", "Brouillon"]] |
Si vos filtres between ne retournent pas les résultats attendus :
AAAA-MM-JJbetween fonctionne avec les champs date, datetime et numérique::: warning
Limitation connue : Lorsque vous utilisez des chaînes de caractères contenant T (format ISO-8601 complet), la composante horaire est préservée. Cependant, pour les dates simples, le système considère automatiquement la borne inférieure comme le début de la journée et la borne supérieure comme la fin de la journée.
:::
L'opérateur between est un outil puissant pour créer des requêtes précises sur des plages de valeurs. Que vous travailliez avec des dates, des montants ou d'autres valeurs numériques, cet opérateur vous permet de filtrer efficacement vos données pour obtenir exactement les informations dont vous avez besoin.
Pour aller plus loin, consultez la documentation sur :