2010-07-10 7 views
1

J'essaie de parcourir certaines valeurs et de calculer un rang. J'ai une fonction calculate_rank où je calcule une somme de valeurs. Le problème est à la deuxième fonction. Je veux que le rang d'un utilisateur soit la somme de tous les utilisateurs qui suivent une relation avec lui. Je fais une itération dans la deuxième fonction ici où j'essaie d'ajouter le rang de tous les utilisateurs qui sont dans une relation de suivi avec l'utilisateur envoyé en paramètre. Mon problème est que la valeur retournée est zéro (0). Je suis sûr que je me trompe dans la deuxième fonction, mais je ne vois pas: où?Django itération - calcul d'une somme

def calculate_rank(user): 
rank = calculate_questions_vote(user) + calculate_votes(user) + calculate_replies(user) 
return rank 


def calculate_followers_rank(user): 
     follower = Relations.objects.filter(follow = user) 
     follower_rank= 0 
     for a in follower: 
      follower_rank += calculate_rank(follower) 
     return follower_rank 

Répondre

4

vous passez follower - à savoir la liste complète des disciples - dans la fonction calculate_rank. Je pense que vous voulez soit a (le suiveur actuel dans l'itération) ou user (l'utilisateur original étant suivi) ici. Ces choses seraient plus faciles à repérer si vous donniez à vos variables des noms plus précis. Si vous aviez appelé la liste des suiveurs followers, au pluriel, vous verriez que cela n'aurait pas de sens de le passer dans calculate_rank.

+0

Cela ressemble à un problème. De plus, avoir des objets "Follower" stockés dans un modèle appelé "Relations" est déroutant. –

+0

hmm ... le problème est que si je passe 'a' (pour calculer la somme des rangs des utilisateurs suivant l'utilisateur 'utilisateur'), ​​il semble que ma fonction retourne toujours zéro ... je me demande pourquoi? – dana

+0

Peut-être parce que le filtre sur Relations.objects ne renvoie aucun résultat. Mais j'espère que tu as déjà vérifié ça. Ou envisagez-vous seulement de demander à SO de construire et de déboguer maintenant votre webapp entière pour vous? –