Джанго - страшная «итерация по непоследовательности» - PullRequest
1 голос
/ 25 августа 2010

Привет! Я ищу список участников, в зависимости от того, откуда пришел их клуб.

Это мой код:

 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: он выдает «итерацию по непоследовательности»

Я не совсем уверен, почему? Кто-нибудь может дать мне какие-нибудь идеи?!

EDIT:

Решено с использованием следующего:

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 Ответ

2 голосов
/ 25 августа 2010

Не могу комментировать, если не смотреть на модель участника.Но

  1. Разве мы не можем использовать .filter с обратной навигацией вместо get_members
  2. Нужно ли нам столько циклов и доступ к БД внутри цикла?Например:

clubs = Club.objects.filter (location__country__in = list_of_user_countries)

Если ваш окончательный список - это список участников, вы можете сделать это, как я упоминал выше (по крайней мереоптимизированный способ)

...