2017-04-24 72 views
1

我想基於它的一個字段名稱是否在小寫字母值列表中篩選出一個查詢集。麻煩的是,有些字段值有大寫字母,所以我不能做Django對象管理器'較低'參數

all_listings = all_listings.objects.filter(make__name__in=makes) 

是否有可能的方式說沿着

all_listings = all_listings.objects.filter(make__name__lower__in=makes) 

回答

2

你可以嘗試使用一些線路Lower func

from django.db.models.functions import Lower 

all_listings = all_listings.objects.annotate(name_lower=Lower('make__name')).filter(name_lower__in=makes) 
+0

嗨Dima,我希望那會是,但是當我用iexact嘗試查詢時,我得到錯誤「django.core.exceptions.FieldError:對於CharField不支持的查找'確切'或加入不允許的字段。 – JBT

+0

對不起,我錯誤地讀取了您的查詢。我改變了我的答案。現在試試吧 –

+0

非常好查詢迪瑪,謝謝。這兩種註釋方式,以及itzmeontv的正則表達式都可以工作。謝謝你們倆。 – JBT

1

你可以做

all_listings = all_listings.objects.filter(make__name__iregex=r'(' + '|'.join(makes) + ')') 
+0

謝謝itzmeontv,這個查詢和Dima的註釋都爲我工作。如果我可以標記兩個答案是正確的,我會的。 – JBT