我爲我的網站製作了一個搜索功能,用空格分隔輸入的文本,然後用__contains檢查每項工作。我想擴大這個範圍,這樣我就可以通過我希望它檢查__contains的列,比如「First name」,「Last Name」...等。Django使用數組查詢列值
我現在擁有的一切:
def getSearchQuery(search,list,columns=None):
"""
Breaks up the search string and makes a query list
Filters the given list based on the query list
"""
if not columns:
columns = { name }
search = search.strip('\'"').split(" ")
for col in columns:
queries = [Q(col__contains=value) for value in search]
query = queries.pop()
for item in queries:
query |= item
return list.filter(query)
問題是Q(col__contains =值)does not工作爲 「山口」 不是列。有沒有辦法告訴Django這是一個變量,而不是實際的列?我已經嘗試了谷歌搜索這個,但老實說,不知道如何在沒有把我的所有代碼的短語。
我不知道,但如果你只需要改變'Q(col__contains =值)'來'Q(COL + '__包含'=值)'在自己的代碼,不這行得通? –
嗯,這導致「太多的值解開(預期2)」,但它似乎是在正確的軌道上 – user2508385
query = queries.pop()'將在下一次迭代中重寫'query'? –