gpt4 book ai didi

带有不同和 order_by 的 Django 查询

转载 作者:行者123 更新时间:2023-12-03 15:01:00 25 4
gpt4 key购买 nike

我有两个模型

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

这个查询给了我我想要的,但如果雇主有多个职位,它会返回重复的雇主。

我会用 distinct()但在 Django 文档中我发现

*在 order_by() 调用中使用的任何字段都包含在 SQL SELECT 列中。当与 distinct() 结合使用时,这有时会导致意想不到的结果。如果您按相关模型中的字段排序,这些字段将被添加到选定的列中,否则它们可能会使重复的行看起来不同。由于额外的列不会出现在返回的结果中(它们仅用于支持排序),因此有时看起来返回的结果是不明确的。*

虽然他们解释了我的问题,但没有指定解决方案。

能否给我一个建议,如何在不破坏 API 稳定性的情况下按我的雇主列表进行分组?

最佳答案

您可以放在Employer类其最新JobTitle激活日期,然后在不使用关系的情况下按此字段排序。[1]这里的权衡是有点数据重复,并且需要在对应 JobTitle 时手动更新雇主的最新职位激活日期。实例变化。

另外,检查 this post对于另一个使用 annotate() 的解决方案.

相关问题:

[1] Queryset API distinct() does not work?

关于带有不同和 order_by 的 Django 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6648545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com