我有一個django模型和一個字段代表一個用戶的全名。我的客戶希望我設置一個篩選器,以基於一組字符串搜索用戶,其中全部名稱都必須是不區分大小寫的。過濾Django數據庫的字段包含數組中的任何值
例如
如果用戶full_name = "Keith, Thomson S."
而且我有一個列表['keith','s','thomson']
我想執行的過濾器相當於
Profile.objects.filter(full_name__icontains='keith',full_name__icontains='s',full_name__icontains='thomson')
問題是這樣的名單可以動態大小 - 所以我不知道如何做到這一點。
任何人有任何想法?
我不知道鏈接所有這些過濾器後,最終的sql表達式會變成什麼樣子。 – akonsu
@akonsu我只是試了一下(好吧,類似的東西) - 它被轉換爲'where子句中的一系列'AND's,即'full_name LIKE%keith%AND full_name LIKE%s%AND ... ' –
@isbadawi,+1 - 請注意,多個Q對象的默認運算符是AND,因此您可以在不使用reduce/operator.and_的情況下運行「* [Q1,Q2,Q3]」。 –