2017-10-15 66 views
0

如何找到很多比賽用該組中另一許多查詢集Django的查詢集對象(其中包含一個搜索對象)中的一個對象對象如何從另一個查詢集Django中的一個查詢集中找到多個匹配的對象?

例如,如何找到最頻繁的產品,以產品和推斷其數量

我對這樣的問題道歉,我還是菜鳥,我的大腦不能 如此關鍵認爲

階模型

class Order(models.Model):     
    products_of_order = models.ManyToManyField("ProducInOrder", related_name='Some_Products') 

class ProducInOrder(models.Model): 
    order = models.ForeignKey(Order, blank=True, null=True, default=None) 
    product = models.ForeignKey(Product, blank=True, default=None) 
    quantity = models.IntegerField(default=0) 

產品型號

class Product(models.Model): 
     name_of_product = models.CharField(max_length=20) 

我試着這樣做:

product = Product.objects.all() 
some = Order.objects.filter(products_of_order__product__in=product).count() 

,但它只是返回的順序包含產品的所有產品, 如何讓計算訂單的產品每一個產品,其與產品清單匹配。

我有一個想法如何使它但我想使其在同一行)在一個查詢集)

some_dict = {} 
for i in some: 
    for s in i.products_of_order.all(): 
     if s.product.name_of_product in some_dict: 
      some_dict.s.product.name_of_product += 1 
     else: 
      some_dict.s.product.name_of_product = 1 

回答

0

目前還不清楚你在問什麼。但是最後一段代碼將更自然地用defaultdict表示:

count = collections.defaultdict(int) 
for order in some: 
    for product in order.products_of_order.all(): 
     count[product.name] += 1 
相關問題