【发布时间】:2015-09-06 01:27:24
【问题描述】:
我有两个模型定义为 Owner 和 Dog
class Dog(models.Model):
name = models.CharField(max_length=255)
owner = models.ForeignKey(Owner)
adopted_date = models.DateTimeField()
class Owner(models.Model):
name = models.CharField(max_length=255)
我想和所有主人一起列出截止日期收养的狗的数量。
示例: 所有者姓名 日期 金额 理查德 15/11/24 2 乔 15/11/24 2
我正在做这个查询
Dog.objects.values('owner', 'adopted_date').annotate(Count('owner')).order_by()
这里的问题是此查询返回所有者 ID 而不是名称。
{
'owner':1,
'adopted_date': 'date',
'owner_count': 2
}
我需要告诉所有者所有者的姓名,例如。
{
'owner':'Richard,
'adopted_date': 'date',
'owner_count': 2
}
任何帮助将不胜感激。
版本
This solution works,但我对此有一些疑问,提出此查询Dog.objects.values('owner__name', 'owner', 'adopted_date').annotate(Count('owner'))
我们可以得到一个好的结果,但我担心性能,这将为值内的每一列生成一个分组,但我不需要分组 owner_name,因为该列不是唯一的。
我正在寻找类似的东西
Dog.objects.values('owner', 'adopted_date').annotate(Count('owner'), Column('owner__name')).order_by()
我知道 Column 聚合器函数不存在,但也许是一种执行此类操作的方法。
提前致谢。
【问题讨论】:
标签: django python-2.7 django-orm