2013-03-08 39 views
0

我在搜索字段中有六個文本框,用戶可以輸入任一值。我通過捕捉這些值在視圖:Django搜索錯誤中的多個字段

if request.GET: 
    result_list = [] 
    client_build = request.GET.get('client_build','') 
    app_build = request.GET.get('app_build','') 
    ws_build = request.GET.get('ws_build','') 
    asset = request.GET.get('asset','') 
    feature = request.GET.get('feature','') 
    test_type = request.GET.get('test_type','') 
result_lists = result.objects.filter(asset=asset,feature=feature,  test_type=test_type) 
    job_list = job.objects.filter(client_build=client_build ,app_build = app_build,ws_build = ws_build) 

當我嘗試對其進行過濾它給「無效字面INT()基數爲10:‘’」的錯誤!我怎樣才能得到那些由用戶輸入的值,並相應地在過濾器中查詢。

我提到這個職位Django - multiple field search issues但我有六個文本框做多個if和else不是我正在尋找。

+1

有沒有一些字段,你正在試圖查詢哪些是IntegerField,但你正在查詢一個字符串? – 2013-03-08 07:22:11

+0

不!只有client_build是Integer,其他字段是CharField,我正確輸入它們。我在url中的查詢字符串:asset = ws&feature =&test_type =&client_build =&app_build =&ws_build =給出錯誤 – swe 2013-03-08 07:25:33

回答

1

@ vikalp.sahni是正確的。您輸入一個整數,但您不知道輸入將您的答案轉換爲字符串。爲了解決這個問題,因爲你說client_build是唯一的整數,它必須是:

client_build = int(request.GET.get('client_build','')) 

總的來說,我認爲你的查詢是否正確。如果它是整數,請記住將int

+0

非常感謝! client_build =(request.GET.get('client_build','')) cb = int('0'+ client_build)爲我工作! – swe 2013-03-08 07:48:45

+0

但我在這裏還有一個問題。過濾器在查詢中執行AND操作,所以如果我不輸入一個字段,它不會給我任何result.is有一些方法可以獲得僅由用戶輸入並使用這些值進行過濾的字段? – swe 2013-03-08 16:20:33