2012-04-28 72 views
0

我敢肯定,使用查询集可以更高效地完成以下代码。我只是不知道如何。有什么建议么?这里是我的代码:正确使用查询集

orders = Order.objects.filter(contact=contact) 
for order in orders: 
    for item in order.orderitem_set.all(): 
     if cartitem.product_id == item.product_id: 
      return True 
return False 

非常感谢, 托马斯

回答

1

检查exists()lookups spanning relationships

Order.objects.filter(contact=contact, 
        order_item__product=cartitem.product_id).exists() 
+0

感谢OKM!这是我最终需要的:** Order.objects.filter(contact = contact,orderitem__product = cartitem.product_id).exists()**我不确定为什么product_id必须成为产品,但无论如何它现在可以工作。 – handros 2012-04-28 18:59:02

+0

@ user1294974已修复。不知道为什么'_id'不起作用,它通常应该用于FK。但是'产品'总是有效并且代码更短。 – okm 2012-04-29 05:32:55

+0

@ user1294974欢迎来到Stack Overflow!现在您已经用okm的答案解决了您的问题,请确保使用绿色复选标记将其标记为已接受。 – Dougal 2012-04-29 06:53:35