Django - 可怕的'迭代'非序列'

时间:2010-08-25 11:01:58

标签: python django django-models django-queryset

您好我希望根据俱乐部的来源填写一份会员名单。

这是我的代码:

 members = []
 if userprofile.countries.count() > 0:
     for c in userprofile.countries.all():
         clubs = Club.objects.filter(location__country = c)
         for club in clubs:
             members_list = Member.objects.get_members(club)
             for m in members_list:
                 members.append(m)

然而,在评估for m in members_list:时,它会抛出'迭代超过非序列'

我不完全确定为什么?任何人都可以给我任何想法吗?!

编辑:

使用以下方法解决:

members = []
if userprofile.countries.count() > 0:
            members_list = member.objects.filter(memberstoentities__club__location__country__in = userprofile.countries.all())
            for m in members_list:
                members.append(m)

1 个答案:

答案 0 :(得分:2)

除非查看会员模型,否则无法发表评论。但

  1. 我们不能使用.filter和后退导航,而不是get_members
  2. 我们是否需要那些循环,并在循环内部进行db访问?例如:
  3. clubs = Club.objects.filter(location__country__in = list_of_user_countries)

    如果您的最终列表是成员列表,您可以像我上面提到的那样(至少以优化方式)