我目前正在使用Django.
我想在使用中使用多個條件icontains,如下所示。filterQ
但在這種情況下,如果其中一個或是target_1( ) ,則獲取所有資料。target_2empty string''
queryset = MyModel.objects.filter(Q(my_field_1__icontains=target_1)| Q(my_field_2__icontains=target_2)).all()
但是,如果任一目標的值變為空字串,我不想將其包含在資料中。
僅當它們不包含空字串且包含其他值時,如何才能啟用它?
蟒蛇:3.7.5
姜戈:3.2。
uj5u.com熱心網友回復:
您可以使用字典理解來過濾掉空值:
data = {'my_field_1__icontains': target_1, 'my_field_2__icontains': target_2}
data = {k: v for k, v in data.items() if v}
if data:
queryset = MyModel.objects.filter(Q(**data, _connector=Q.OR))
else:
queryset = MyModel.objects.none()
檢查if data是否至少有一項具有非空字串。如果不是這樣,我們回傳一個空的查詢集。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420196.html
標籤:
