2011-07-21 16 views
0

これらのモデルを使用してDjangoで複雑な照会を試みます。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 jobtitlesの大きさに応じて、すべての検証雇用者をリストアップしてみてください。 雇用者の職種がConmfirmedでない場合は、リストの最後にする必要があります。

私はこのクエリは、あなたが期待するように私は、多かれ少なかれ、しかし何をしたいんConfirmed役職が排除されていない雇用者

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') 

をしよう。

クエリの末尾にあるEmployersを効率的に追加するにはどうすればよいですか。

答えて

0
eList.annotate(jtt_count=Count('jobtitle')).order_by('jobtitle__status','-jtt_count','eminence') 

が動作するはず

おかげで、私は思います。

関連する問題