我有以下(简化的)模型:

class Donation(models.Model):
    entry_date = models.DateTimeField()

class Category(models.Model):
    name = models.CharField()

class Item(models.Model):
    donation = models.ForeignKey(Donation)
    category = models.ForeignKey(Category)


我正在尝试显示按捐赠年份分组的每个类别的项目总数。

我已经试过了:

Donation.objects.extra(select={'year': "django_date_trunc('year',
    %s.entry_date)" % Donation._meta.db_table}).values('year',
    'item__category__name').annotate(items=Sum('item__quantity'))


但是我在item__category__name上收到字段错误。

我也尝试过:

Item.objects.extra(select={"year": "django_date_trunc('year',
    entry_date)"}, tables=["donations_donation"]).values("year",
    "category__name").annotate(items=Sum("quantity")).order_by()


通常可以得到我想要的东西,但是物品数量要乘以捐赠记录的数量。

有任何想法吗?基本上我想显示此:

2010
  -类别1:10件
  -类别2:17个项目

2009年
  -类别1:5个项目
  -类别3:8个项目

最佳答案

另一篇文章看起来像您要的内容:

Django equivalent for count and group by

但是,取决于您的Django版本,您可能无法使用它。

10-07 12:34