算上對外關係的數量
class Category(models.Model):
name = models.CharField(max_length=20)
class Product(models.Model):
name = models.CharField(max_length=64)
category = models.ForeignKey(Category, on_delete=models.PROTECT)
獲取每個類別的數字產品:
>>> categories = Category.objects.annotate(Count('product'))
這會將 <field_name>__count
屬性新增到返回的每個例項中:
>>> categories.values_list('name', 'product__count')
[('Clothing', 42), ('Footwear', 12), ...]
你可以使用關鍵字引數為屬性提供自定義名稱:
>>> categories = Category.objects.annotate(num_products=Count('product'))
你可以在 querysets 中使用帶註釋的欄位:
>>> categories.order_by('num_products')
[<Category: Footwear>, <Category: Clothing>]
>>> categories.filter(num_products__gt=20)
[<Category: Clothing>]