2010-07-10 101 views
1

我试图遍历一些值,并计算一个等级。我有一个calculate_rank函数来计算值的总和。问题在于第二个功能。我希望用户的排名是与他关系密切的所有用户的总和。 我在这里做第二个函数的迭代,我尝试添加与作为参数发送的用户关联的所有用户的排名。 我的问题是返回的值是零(0)。 我确信我错误的第二个功能,但我没有看到:在哪里?Django迭代 - 计算总和

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 

回答

4

你传递follower - 即追随者的完整列表 - 到calculate_rank功能。我想你或者想要a(迭代中的当前跟随者)或user(原始用户正在跟踪)。

如果你给你的变量更准确的名字,这些事情会更容易发现。如果你以复数形式呼叫追随者followers的列表,那么你会发现将它传递到calculate_rank是没有意义的。

+0

这看起来像是问题所在。另外,在名为“关系”的模型中存储“追随者”对象是令人困惑的。 – 2010-07-10 22:40:02

+0

嗯......问题是,如果我传递'a'(用于计算用户'用户'之后用户的排名总和),似乎我的函数仍然返回零...我不知道为什么? – dana 2010-07-11 08:00:02

+0

可能是因为Relations.objects上的过滤器没有返回任何结果。但我希望你已经检查过了。或者你只是计划要求建立并现在为你调试整个webapp? – 2010-07-11 12:16:21