[英]Django aggregation and following foreign key relations
楷模:
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.
視圖:
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'))
我得到這樣的東西:
[{'item': 1, 'item__count': 2}, {'item': 2, 'item__count': 1}]
這很好,但我真正想要的是能夠獲得有關該項目的額外信息,例如其名稱等。但我似乎無法輕易做到這一點,因為我得到的只是項目ID,所以我不能在我的模板中執行,例如,{{item.name}}。
這樣做有什么好方法嗎?
這樣做。 嘗試:
Item.objects.filter(
sale__sale_date=date.today()
).annotate(
count = Count('sale')
)
當您關心從Item而不是Sale中獲取額外數據時,您可以查詢該類:
models.Item.objects.filter(sale__sale_date=date.today()).annotate(Count('id'))
這將返回ORM對象,而不是values
或values_list
:您還將具有可用於該特定項目的銷售計數的合成id__count
屬性。
或者,如果您提前知道您想要哪些字段,您也可以在values
調用中明確命名它們,例如:
sales_today.values('item', 'item__name').annotate(Count('item'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.