2017-04-18 87 views
0

Models.py結合查詢集 - Django的

class sells(models.Model): 
    #unimportant stuff here 
    type = ... 
    supplier = ... 
    user = ... 
    item_id = models.AutoField(primary_key=True) 

class sale_items(models.Model): 
    item_id = models.OnetoOneField(sells, on_delete=models.CASCADE, null=True) 
    item_name = ... 
    description = ... 
    #other unimportant stuff 

所以我想實現搜索,而現在我有它,這樣的搜索返回sale_items如發現任何信息名稱和描述。但是我也需要輸出一個物品類型和供應商,這個物品類型和供應商都是在銷售模式中。從本質上講,我試圖做這樣的事情:

SELECT A.item_id, A.item_name ... B.type, B.supplier ... 
FROM sale_items A, sells B 
WHERE A.item_id = B.item_id 

Views.py

def SearchView(request): 
    query_results = sale_items.objects.filter(Q(item_name__icontains=search) 
         Q(description__icontains=search)) 
    return render(request, 'db/search_results.html', {'query_results':query_results}) 

我不包括用於可變搜索代碼,但它是已進入文本搜索欄。 query_results是正確的,並且在我的模板(search_results.html)中,我使用for循環打印出項目名稱和描述。

我想以某種方式也包含在相同的item_id對應的銷售模式中的信息。我一直在嘗試很多不同的事情,試圖讓這個工作,並找不到它。

回答

0

試試這個:

query_results = sale_items.objects.filter(Q(...) | Q(sells__type__icontains=search)) 
+0

類型和供應商/用戶不相關的搜索。搜索將根據名稱和說明返回項目。每個商品都有一個ID,位於sells和sale_items中。所以我需要使用該ID從兩個模型中獲取相應的信息。 – Chris