我有两个型号
class Employer(models.Model):
name = models.CharField(max_length=300, blank=False)
id = models.IntegerField()
status = models.IntegerField()
eminence = models.IntegerField(null=False,default=4)
class JobTitle(models.Model)
name = models.CharField(max_length=300, blank=False)
employer = models.ForeignKey(Employer,unique=False,null=True)
activatedate = models.DateTimeField(default=datetime.datetime.now)
我需要所有雇主按其职务最后激活的顺序。
Employer.objects.filter(status=1).order_by('eminence','-jobtitle__activatedate')
这个查询给出了我想要的结果,但是如果employer有多个职位,它会返回重复的雇主。
我会使用distinct()
,但在Django文档中我发现
* order_by()调用中使用的任何字段都包含在SQL SELECT列中。当与distinct()一起使用时,这有时可能会导致意外的结果。如果您按相关模型中的字段排序,这些字段将被添加到选定的列中,并且它们可能会使原本重复的行看起来不同。由于额外的列不会出现在返回的结果中(它们只是为了支持排序),所以有时看起来返回的是不明确的结果。*
尽管他们解释了我的问题,但没有具体说明解决方案。
可以给我一个建议,我怎样才能在不破坏API稳定性的情况下按我的雇主列表分组?
https://stackoverflow.com/questions/6648545
复制相似问题