我有这样的模型和查询
class Employer(Models.model)
name = ...
class JobTitle(Models.model)
name = ...
employer = models.ForeignKey(Employer)
和查询
Employer.objects.select_related('jobtitle')
.filter(jtt__activatedate__range=[startdate,enddate])
.annotate(jtt_count=Count('jobtitle'))
.order_by('-jtt_count')[:5]
如您所见,它会返回5个雇主名单,其中包含与该雇主相关的最大招聘人数,且其激活日期在某个范围内。
但是,我还希望获得该查询中每个雇主的职位总数。
当然,我可以遍历每个雇主并进行这样的查询JobTitle.objects.filter(employer = emp)
并查询该查询的长度,但这是不好的解决方案。
我如何在该查询中实现此目的?
虽然可能无法获得职位总数和过滤数量的职位,但我可能会得到每个职位的职业,len(emp.jobtitle)
但是它也不起作用。
由于
答案 0 :(得分:1)
尝试extra查找。所以,在你的情况下,它可能是这样的:
.extra(
select={
'jobtitle_count': 'SELECT COUNT(*) FROM YOURAPP_jobtitle WHERE YOURAPP_jobtitle.employer_id = YOURAPP_employer.id'
},
)