2014-10-06 28 views
0

我有POST數據:Django的:準備具有多個SQL條件,其中

filter[param1][type]:text 
filter[param1][range]:null 
filter[param1][suffix]: 
filter[param1][prefix]: 
filter[param1][v][text]:33 
filter[param1][v][type]:has 
filter[param2][type]:text 
filter[param2][range]:null 
filter[param2][suffix]: 
filter[param2][prefix]: 
filter[param2][v][text]:make 
filter[param2][v][type]:has 
... 

這是處理程序在我的視圖POST請求: 濾波器=(request.POST.get( '過濾器',假))

if (filter is not False): 
    filter_obj = json.loads(filter) 
    for key, value in filter_obj.items(): 
     if value.get('v') is not None: 
      filters[key] = value.get('v').get('text') 

需要得到一份有準備的多個SQL條件,其中:

WHERE (
    param1 = 33 AND 
    param2 = make AND 
    ... 
) 

我怎麼能在Django做呢?

+1

你甚至在網上檢查如何編寫Django where子句嗎?那裏有很多:)你嘗試了什麼? – 2014-10-06 06:49:47

+0

是的。我發現像條件:條件['table_name'] ='Q(row_name = param_text)',但我不能用於動態數據 – bdhvevhvonof 2014-10-06 06:51:52

+0

通過動態的你的意思是,你的數據來自後發送HTTP請求?你的動態數據是否在'filter [param1]'和'filter [param2]'中?你能否提供關於你的數據的更多細節? – 2014-10-06 08:36:24

回答

0

醜陋的事情發生這樣! .........像烏爾imagen畫質的情況...ü知道醜陋的條件

if len(request.POST.get("name"))>1: 
    Object.objects.filter(name =request.POST.get("name")) 
if len(request.POST.get("name"))>1 and len(request.POST.get("id"))>1: 
    Object.objects.filter(name =request.POST.get("name"), id = request.POST.get("id")) 

快捷方式或答案:

kwargs = {} 
if len(request.POST.get("name"))>1: 
    kwargs['name']=request.POST.get("name") 
if len(request.POST.get("id"))>1: 
    kwargs['id']=request.POST.get("id") 
result = Object.objects.filter(**kwargs) 

但答案是爲時已晚。對不起