0

我有一些代碼是這樣的:如何獲得查詢集的名單,並自定義過濾器在Django

cats = Category.objects.filter(is_featured=True) 
for cat in cats: 
    entries = Entry.objects.filter(score>=10, category=cat).order_by("-pub_date")[:10] 

但是,結果只顯示貓的最後一個項目,也有其中「> =問題「在過濾器中。幫我解決這些問題。非常感謝!

回答

1

您在for循環的每次迭代中都不會追加到entries,因此您只能得到最後一個類別的結果。試試這個:

entries = Entry.objects.filter(score__gte=10, category__is_featured=True).order_by("-pub_date")[:10] 
2

您可能需要閱讀關於此主題的django docs。然而,爲了讓你開始,filter()方法就像其他方法一樣,只需要參數和關鍵字參數,而不是表達式。所以,你不能說foo <= bar,只是foo=bar。 。Django的允許關鍵字名來表示你在傳遞值之間的關係來解決這個限制,在你的情況,你可能需要使用:

Entry.objects.filter(score__gte=10) 

__gte追加到字段名稱指示要執行的比較(score >= 10)。