2016-09-16 70 views
1

使用下面的示例,我試圖使用查詢集並將/ chain鏈接過濾器放在一起。據我瞭解,最後queryset.count()應該只有1個實例,但它總是有原來的10個實例。如何在Django中正確地鏈接查詢集

預期的最後queryset.count()輸出爲1:

# Set a default queryset. 
def get_queryset(self, *args, **kwargs): 
    queryset = super(UserMixin, self).get_queryset(*args, **kwargs) 
    queryset.count() # 10 instacnes 
    queryset.filter(id=1) 
    queryset.count() # 10 instacnes excpeted 1 

我能解決這個問題,我認爲:

queryset = queryset.filter(id=1) 

這是正確的做法還是有辦法鏈條他們正確哪裏可以添加queryset對象嗎?

+1

嘗試'queryset.filter(id = 1).count()' –

回答

3

你從來沒有過濾器分配到任何東西,因此不會對其進行更新

queryset = queryset.filter(id=1) 

是的,這是因爲你正在創建一個新的查詢正確的方法,否則你需要調用結束計數前面的過濾器調用

+1

謝謝,我想確保沒有自動分配的函數,即自我引用自己回來或某事,但這使得感。再次感謝你。 – Prometheus