2013-11-25 116 views
-1

我有以下代碼。如何將字段添加到ValuesQuerySet

pages = PagePromotion.objects.values('page_url').distinct().annotate(
     freq=Count('id')) 

我的哪個頁面輸出..

ipdb> pages[0] 
{'freq': 7, 'page_url': u'/'} 

ipdb> FlatPage.objects.get(url=pages[0]['page_url']).id 
1 

但是,當我這樣做,

pages[0]['id'] = FlatPage.objects.get(url=pages[0]['page_url']).id 

它仍然給我的老結果

{ '頻率':7, 'PAGE_URL':U '/'}

當我詢問頁面[0]。是否有任何其他方式來擴展ValuesQuerySet對象

+0

我不確定這應該顯示什麼。爲什麼值應該改變? –

+0

爲什麼不只是'page = PagePromotion.objects.values('id','page_url')。distinct()。annotate( freq = Count('id'))' – karthikr

+0

它不一樣,id我想要不屬於PagePromotion,我想將ValuesQuerySet作爲字典並使用其他參數而不是模型擴展它 – tunaktunak

回答

0

將ValuesQuerySet轉換爲列表後,我的問題解決了;

pages = list(pages) 

ipdb> pages[0]['hede'] = 2 
ipdb> pages[0] 
{'hede': 2, 'freq': 7, 'page_url': u'/'} 
1

你也可以做這樣的事情:

for page in pages: 
    page.update({'hede': 2}) 

主要部分在這裏更新這臺新屬性「合德」與它的價值在你的網頁ValuesQuerySet反對。