我想使用一組過濾器從我的數據庫中檢索一堆行。django有條件地過濾對象
我想知道如果條件過濾器是適用於django。也就是說,「如果變量不是無,或者不應用其他過濾」。
事情是這樣的:
user = User.objects.get(pk=1)
category = Category.objects.get(pk=1)
todays_items = Item.objects.filter(user=user, date=now()).conditional_filter(category=category))
我想要做的是應用類別過濾器,只有當類別不是無。
如果類別是無(表示它沒有在請求對象中給出),那麼這個過濾器根本就不會被應用。這會爲我節省一堆「if-elif-else」情況。
有沒有辦法做到這一點?
謝謝,我不明白的是'category__isnull = True'。我的對象都沒有在其分類字段中有NULL。這使得它永遠是假的。 – xpanta
@xpanta,解答回答。 – danihp
@danihp,對不起,我還是不太明白__isnull = True。它是否適用於這種情況:包含「類別」的表單,用戶填寫並提交表單。如果用戶沒有輸入「類別」,則此值爲「」。然後過濾數據庫沒有「類別」的約束,如果我跟着你的第一個例子?如果我的理解正確,請糾正我。提前致謝。 –