2010-08-25 61 views
1

您好我正在尋找成員的名單,根據他們的俱樂部來自何處。Django - 可怕'迭代非序列'

這是我的代碼:

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) 
+0

你可以發佈'成員'模型的源代碼嗎? – 2010-08-25 11:05:17

+1

什麼是'Member.objects.get_members'應該返回?我猜它會返回一個列表,但很明顯,它不會('None'?)... – delnan 2010-08-25 11:07:10

+1

'Member.objects.get_members(club)'做了哪些不能由'club.member_set 。所有()'? – 2010-08-25 11:39:28

回答

2

不能發表評論,除非看着會員模式。但

  1. 我們不能用.filter與後退導航,而不是get_members
  2. 我們是否需要一顆顆循環,DB訪問內部循環?例如:

俱樂部= Club.objects.filter(location__country__in = list_of_user_countries)

如果你的最終名單是會員的名單,你可以做到這一點,因爲我上面提到的(至少在最優化的方式)

+0

謝謝!通過混合查詢和使用你的方法,我已經設法解決它! – 2010-08-25 15:00:58