2010-07-07 4 views
0

Cette ligne fonctionne et retourne la valeur que je suis à la recherche:Django filtre Valeurs Nested

logs = Log.objects.filter(filterURI=aFilter.uri).values()[0]['yk'] 

Cependant, lorsque je tente d'ajouter un autre filtre et faire la même chose que je reçois des erreurs:

logs = Log.objects.filter(filterURI=aFilter.uri).filter(k=k-1).values()[0]['yk'] 

Je crois comprendre qu'un objet object.filter renvoie un ensemble de requêtes mais aussi un 'filtre d'un filtre'. Donc, je devrais être capable de faire l'appel de «valeurs» de la même manière indépendamment du fait que j'ai un filtre ou 1000.

Qu'est-ce que je fais mal ici.

Merci d'avance.

+2

S'il vous plaît publier le retraçage complet, il sera utile – Ashok

Répondre

0

Je ne pense pas que l'erreur réside dans le fait que vous avez deux filtres - c'est dans le second filtre réel. k=k-1 ne fonctionnera que si vous avez à la fois un champ de modèle et une variable locale appelée k - la première est à gauche de l'expression, la seconde à droite.

Si vous voulez faire référence au champ de modèle sur le droit de l'expression, utilisez F:

.filter(k=(F('k')-1) 
+0

La valeur k à gauche de l'égalité est Dans le champ modèle, la valeur à droite du signe égal est calculée, simplement k-1, et elle ne se réfère pas au champ du modèle. Le 'k' dans k-1 est passé ci-dessus. – Przemek