2016-04-05 74 views
0

我有兩個型號:如何檢索一個多對多關係對象的數量向後

class Tag(models.Model): 
    """ This class rapresent a tag that can be applied to a product's 
     category """ 

    name = models.SlugField() 

class Product(models.Model): 
    """ This class rapresent a product """ 

    product_id = models.IntegerField() 
    image = models.ImageField(max_length=1024) 
    price = models.DecimalField(max_digits=6, decimal_places=2) 
    discount = models.DecimalField(max_digits=6, decimal_places=2) 
    brand = models.CharField(max_length=200, default='') 
    category = models.ManyToManyField(Tag) 
    gender = models.CharField(max_length=200, default='') 
    last_updated = models.DateTimeField(auto_now=False, auto_now_add=False, 
             default=timezone.now) 

我無法弄清楚如何找回那是有界的每標籤的對象產品的數量。我試過類似的東西:

Tag.objects.annotate(prod_num=Count(Tag.product_set.all())).order_by('prod_num') 

但似乎什麼都不能正常工作。有一個很好的,乾淨的方式來獲得tag_name,num_of_prods的列表?

回答

3

這不是你如何使用annotate。它應該是:

Tag.objects.annotate(prod_num=Count('product')).order_by('prod_num') 
+0

其中'prod_num'從哪裏來?在它說的文檔中,'num_ *' –

+1

它只是一個新的名稱,用於註釋查詢集中的每個對象。所以你可以使用'num_ *'或'* _num'。我認爲在文檔中他們使用'num_ *',因爲它是可讀和可理解的。 – AKS

+0

謝謝你,你救了我的一天! –

相關問題