Django聚合和跟随外键关系

Tom*_*ick 3 python django

楷模:

class Item(models.Model):
    name = models.CharField(max_length=100)
    # More stuff.
class Sale(models.Model):
    sale_date = models.DateField(auto_now_add=True)
    item = models.ForeignKey(Item)
    # More stuff.
Run Code Online (Sandbox Code Playgroud)

视图:

class TodaySales(ListView):
    # Stuff in here.
    def get_queryset(self):
        sales_today = Sale.objects.filter(sale_date=date.today())
        return sales_today.values('item').annotate(Count('item'))
Run Code Online (Sandbox Code Playgroud)

我得到这样的东西:

[{'item': 1, 'item__count': 2}, {'item': 2, 'item__count': 1}]
Run Code Online (Sandbox Code Playgroud)

这很好,但我真正想要的是能够获得有关该项目的额外信息,例如其名称等.但我似乎无法轻易做到这一点,因为我得到的只是项目ID,所以我不能在我的模板中执行,例如,{{item.name}}.

这样做有什么好方法吗?

Ily*_*lya 7

这样做.尝试:

Item.objects.filter(
    sale__sale_date=date.today()
).annotate(
    count = Count('sale')
)
Run Code Online (Sandbox Code Playgroud)

  • 这很性感甚至有效.谢谢. (2认同)