UniteProperty.objects.filter(val_champ__icontains=val1, val__gte=q-1, val__lte=q+1)
Le 31/08/2011 11:05, sesame a écrit :
> visiblement le double filtrage ne marche pas
>
> voici ma fonction
>
> def search_filter(request):
> errors = []
> try:
> if 'q' in request.GET:
> q = int(request.GET['q'])
> val1 = request.GET['fil']
> except ValueError, error:
> return render_to_response('materiaux/message.html',
> locals(),
>
> context_instance=RequestContext(request))
>
> else:
> print(q)
> print(val1)
> mat = UniteProperty.objects.filter(val_champ__icontains =val1)
> mat = UniteProperty.objects.filter(val__gte=q-1, val__lte=q+1 )
>
> return render_to_response('materiaux/search_results_filt.html',
> {'mat' : mat,
> 'query': val1,
> 'query': q,
> })
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
voici ma fonction
def search_filter(request):
errors = []
try:
if 'q' in request.GET:
q = int(request.GET['q'])
val1 = request.GET['fil']
except ValueError, error:
return render_to_response('materiaux/message.html',
locals(),
context_instance=RequestContext(request))
else:
print(q)
print(val1)
mat = UniteProperty.objects.filter(val_champ__icontains =val1)
mat = UniteProperty.objects.filter(val__gte=q-1, val__lte=q+1 )
return render_to_response('materiaux/search_results_filt.html',
{'mat' : mat,
'query': val1,
'query': q,
})
mais, pourrait on utiliser le propriete.objects.filter() sur les deux champs val et val_champ ?
]]>Sinon, il faut que tu définisses val1 et val2 en fonction de q avec val1 = q-10 et val2=q+10
]]>on pars d'un formulaire avec un boutton submit qui envoie la valeur , on teste un encadrement de cette valeur
]]>> Bonjour
>
Bonjour sesame,
> Je cherche a faire une recherche par filtrage sur un champ numerique
>
> Exemple
>
> class propriete(models.Model):
> name = models.ForeignKey(Material, verbose_name=_('name'))
> val_champ = models.CharField(_('val_champ'), max_length=50)
> val= models.FloatField(blank=True, null=False)
>
>
> je voudrais trouver tous les materiaux dont la valeur du champ "val" est
> compris
> dans l'intervalle [val1, val2]
>
> comment s'y prendre ?
>
> mat = propriete.objects.filter(…..) ?
tu es à la recherche des arguments "magiques" de la method filter [1]
cela fonctionne de la façon suivante:
{{ nom_de_l_attribute }}__{{ methode_de_filtrage}}
en paramètre il faut passer la valeur sur laquelle le filtrage a lieu
dans ton cas cela donnerai:
>>> mat = propriete.objects.filter(val__gt=val1, val__ls=val2)
et voilà
[1]
https://docs.djangoproject.com/en/dev/ref/models/querysets/#field-lookups
Je cherche a faire une recherche par filtrage sur un champ numerique
Exemple
class Material(models.Model):
name = models.CharField(_('name'), max_length=50)
class propriete(models.Model):
name = models.ForeignKey(Material, verbose_name=_('name'))
val_champ = models.CharField(_('val_champ'), max_length=50)
val= models.FloatField(blank=True, null=False)
je voudrais trouver tous les materiaux dont la valeur du champ "val" est compris
dans l'intervalle [val1, val2]
comment s'y prendre ?
mat = propriete.objects.filter(…..) ?
]]>