2012-05-28 74 views
-1

這段代碼是怎麼回事?一步一步這段代碼是怎麼回事? GET方法和Q對象

keyword = request.GET['keyword'] 
for l in keyword.split(): 
    q = q | (
     Q(title__icontains=smart_str(l)) | 
     Q(content__icontains=smart_str(l)) 
     ) 
    result = News.objects.filter(q) 

每條線發生了什麼?

+1

請修復縮進並澄清您的問題。 – okm

+1

*你認爲發生了什麼?哪一部分讓你感到困惑? http://whathaveyoutried.com/ – Marcin

+0

爲什麼是:「q = q |」 ? – pagepydj

回答

1

您正在接收GET調用中的關鍵字列表,然後將其分解爲關鍵字列表。

您循環遍歷關鍵字,併爲每個關鍵字構建一個存儲在q中的OR查詢。您正在查詢數據庫中的News對象,其中的關鍵字在標題或內容中找到。

在最後一行中,您將過濾出與您的查詢匹配的新聞內容。

你可以找到關於Q參數這裏的更多信息:https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

的|字符表示OR。