Django-fr

Forum

#1 13-07-2012 08:49:38

sesame
Membre
Inscription : 22-03-2011
Messages : 263

filtrage

bonjour

je fais le filtrage suivant pour trouver certains materiaux

units1= Essai_Temperature.objects.filter(Q(val_champ__icontains = val_TT) & Q(val20__lte=val_max ))   
units2= Essai_Temperature.objects.filter(Q(val_champ__icontains = val_TT) & Q(val10__gte=val_min ))   


units3 = units1 | units2

le probleme est qu'a la fin units3 va contenir (par exemple) 9 fois le materiau 1, 4 fois le materiau 2  etc....

est ce normal d'avoir des doublons ?

Hors ligne

#2 13-07-2012 12:09:08

ksamuel
Modérateur
Inscription : 22-06-2012
Messages : 40
Site Web

Re : filtrage

Bonjour,

Oui car vous n'avez pas précisez que vous vouliez un retour de valeurs
uniques. Vous avez demandé les valeurs qui correspondent à vos
critères, et la même entrée peut correspondre plusieurs fois à ce
critère.

Utilisez distinct() pour limiter les doublons.

Par ailleurs:

- vous n'avez pas besoin d'un Q object ici: filter(val_champ__icontains
= val_TT, val10__gte=val_min) fonctionnera parfaitement.
- la convention de nommage Python est de ne pas mettre de "_" pour les
classes (donc EssaiTemperature) et de ne mettre que des minucules aux
variables (donc val_tt).
- je ne sais pas si units1 et units2 vont être lus ou non, mais si non,
dans ce cas on peut obtenir units3 en une seul requête en utilisant
l'opérateur | directement sur les Q objects.


Le ven. 13 juil. 2012 09:49:38 CEST, sesame a écrit :
> bonjour
>
> je fais le filtrage suivant pour trouver certains materiaux
>
> units1= Essai_Temperature.objects.filter(Q(val_champ__icontains = val_TT)
> & Q(val20__lte=val_max ))
> units2= Essai_Temperature.objects.filter(Q(val_champ__icontains = val_TT)
> & Q(val10__gte=val_min ))
>
>
> units3 = units1 | units2
>
> le probleme est qu'a la fin units3 va contenir (par exemple) 9 fois le
> materiau 1, 4 fois le materiau 2  etc....
>
> est ce normal d'avoir des doublons ?
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#3 14-07-2012 07:03:24

sesame
Membre
Inscription : 22-03-2011
Messages : 263

Re : filtrage

merci beaucoup de votre aide

Hors ligne

Pied de page des forums