Django-fr

Forum

#1 31-10-2012 09:42:28

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

utilisation de la fonction de filtrage

bonjour

voila mon probleme

j' enregistre dans ma base les champs propriete, temperature et valeur d'un materiau donné

ce qui donne par exemple plusieures series de valeur identique de temperature

20 45
20 56
20 64

50 68
50 75
50 85
50 69

je calcule dans une fonction pour chaque temperature de serie, la valeur min et max correspondante et j'affiche ces valeurs

ce qui donne par exemple :
Propriete           Temperature      min    max
durete vickers          20           45      64
durete vickers          50           68      85

etc....


ma question est :

comment recuperer ces valeurs min et max pour les utiliser dans une fonction de filtrage du style :
liste_essais= donnee_Temperature.objects.filter(val_champ__icontains = val_TT, valeur_max__lte=val_max, valeur_min__gte=val_min).order_by('name')
La solution consisterait evidemment à rajouter une classe au model pour  enregistrer dans un formulaire la temperature, la valeur min et la valeur max

comment faire autrement ?

y a t il un moyen soit de recuperer ces valeurs pour le filtrage, soit de les calculer de maniere automatique lorsqu'on remplit le premier formulaire??

Hors ligne

#2 31-10-2012 12:08:51

Philippe
Membre
Inscription : 24-07-2012
Messages : 5

Re : utilisation de la fonction de filtrage

sesame a écrit :

...

La solution consisterait evidemment à rajouter une classe au model pour  enregistrer dans un formulaire la temperature, la valeur min et la valeur max

comment faire autrement ?

... soit de les calculer de maniere automatique lorsqu'on remplit le premier formulaire??

Pas sûr d'avoir compris la question, mais j'essaie de répondre:

Peut-être en utilisant un signal : https://docs.djangoproject.com/en/1.4/topics/signals/ de type post_save après avoir rempli le premier formulaire, et en comparant les valeurs min et max et les actualiser si nécessaire. Plus besoin de filtrer après et la requête sera plus légère.

Dernière modification par Philippe (31-10-2012 12:11:15)

Hors ligne

#3 31-10-2012 12:35:24

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

Re : utilisation de la fonction de filtrage

en fait j'affiche une valeur min et max qui proviennent d'un traitement apres lecture de donnees venant d'un premier formulaire

et je suis obligé d'enregistrer manuellement ces valeurs pour utiliser objects.filter

je me demandais simplement si objects.filter ne s'utilisait uniquement que dans le cas de donnees enregistrees dans la base

Hors ligne

#4 31-10-2012 12:47:28

Philippe
Membre
Inscription : 24-07-2012
Messages : 5

Re : utilisation de la fonction de filtrage

Tu les enregistres comment ?
Avec un nouveau formulaire ?
l'idée d'utiliser un signal est de te dispenser d'un nouveau formulaire.
Pour objects.filter il faut effectivement des données dans la base.

Hors ligne

#5 31-10-2012 13:01:56

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

Re : utilisation de la fonction de filtrage

actuellement oui j'ai rajoute une classe au model pour avoir dans l'admin un formulaire et y enregistrer la temperature val min et val max

Hors ligne

#6 31-10-2012 13:17:00

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

Re : utilisation de la fonction de filtrage

en fait j'ai un certain nombre de materiaux enregistres avec leur proprietes

par exemple si je fait une requete (vmin vmax Tmin Tmax) concernant la durete vickers et si le filtrage me sort le materiau Al2O3

alors si dans la base jai trois temperatures pour la durete vickers
j'aurai val min et val max pour ces trois temperatures qui me serviront a tracer les courbes d'interpolation

j'ai donc besoin de quelque chose qui me donne le même resultat que objects.filter

Hors ligne

#7 31-10-2012 17:12:45

Philippe
Membre
Inscription : 24-07-2012
Messages : 5

Re : utilisation de la fonction de filtrage

Si j'ai bien compris tu as 2 classes une pour tes propriétés que tu peuples par ton premier formulaire et une deuxième
pour les valeurs min et max (rattachées au materiau.propriété.temperature) que tu remplis par l'intermédiaire d'un formulaire admin.
(sans code c'est difficile de te répondre)

Plutôt que le faire manuellement, je te proposais d'utiliser un signal et un receiver pour mettre à jour
ta deuxième classe.

Peux-tu poster le code de tes 2 models.

Dernière modification par Philippe (31-10-2012 17:12:59)

Hors ligne

Pied de page des forums