2017-04-18 157 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