2016-06-12 32 views
0

我有一個Django查詢集。我使用groupby改組查詢集:由content_group屬性Django - 重新構建的查詢集不可迭代

[<Faq: Faq object>, <Text: Text object>, <Faq: Faq object>, <Faq: Faq object>] 

content_items組:

content_groups = {} 
for group, items in groupby(content_items, lambda x: x.content_group): 
    content_groups[group] = list(items) 

content_groups看起來是這樣的:

content_items = ContentItem.objects.filter(content_group__row__page=page) 

content_items看起來是這樣的

{<ContentGroup: 16>: [<Faq: Faq object>, <Faq: Faq object>], <ContentGroup: 17>: [<Text: Text object>], <ContentGroup: 18>: [<Faq: Faq object>]} 

遍歷content_groups ...

for content_group in content_groups: 
    for content_item in content_group: 
     print content_item 

...產生'ContentGroup' object is not iterable,我不明白爲什麼。

回答

1

content_groups字典,當你通過迭代過來:

for content_group in content_groups: 

content_group將對應於每個關鍵 - 一個ContentGroup實例。而且,當您嘗試循環時會出錯 - Django模型實例不可迭代。

相反,你的意思是iterate over dictionary items

for content_group, faq_objects in content_groups.items(): 
    print(content_group) 
    for faq_object in faq_objects: 
     print(faq_object) 
    print("----")