Django复杂查询可能需要联合

时间:2011-07-21 12:05:39

标签: django django-models

我尝试通过这些模型在Django中进行复杂的查询。

class JobTitleStatus():
    PENDING = 0
    CONFIRMED = 1
    BANNED

class Employer(models.Model):
     name = models.CharField(max_length=1000)
     isValidated = models.BooleanField(null=False)
     eminence = models.IntegerField(blank=False,null=False,default=4)

class JobTitle(models.Model)
     name = models.CharField(max_length=1000)
     employer = models.ForeignKey(Employer,null=True,blank=True)
     status = models.IntegerField(null=False, choices=JobTitleStatus)

我尝试根据confirmed个职位的大小列出所有经过验证的雇主。 如果雇主没有Conmfirmed个职位,那么它应该在列表的末尾。

我尝试做

eList = Employer.objects.filter(name__icontains=emp).filter(isValidated=True)
eList.filter(jobtitle__status=JobTitleStatus.CONFIRMED).annotate(jtt_count=Count('jobtitle')).order_by('-jtt_count','eminence')

这个查询做了我想要的或多或少,但正如您所期望的那样,没有Confirmed职位的雇主被淘汰。

如何有效地在该查询的末尾添加Employers

谢谢

1 个答案:

答案 0 :(得分:0)

eList.annotate(jtt_count=Count('jobtitle')).order_by('jobtitle__status','-jtt_count','eminence')
我认为

应该有用。