如何解决Django-MAX ...通过ForeignKey自身的GROUP BY
我有一个与此相似的模型:
class Tree(models.Model):
description = models.CharField(max_length = 255,null = False,blank = False)
parent = models.ForeignKey("Tree",null = True,blank = True,on_delete = models.CASCADE)
class Meta:
ordering = ['description','-id']
我需要查找每个父母的最新记录。
我尝试过:
latests = Tree.objects.values("parent").annotate(last = Max("pk"))
结果不正确,因为SQL查询为:
SELECT parent_id,MAX(id) AS last FROM tree GROUP BY id;
ORM将外键转换为源,并且不使用字段内的值。 有没有办法不“跟随”外键而是改用字段的值?
该模型在PostgreSQL数据库中生成具有三列的名为tree的表:
Column | Type
------------+-----------------------
id | integer
description | character varying(255)
parent_id | integer
使用此数据:
id | description | parent_id
----+-------------+----------
1 | A | 1
2 | B | 2
3 | C | 1
4 | D | 1
5 | E | 2
我想要这个结果:
last | parent_id
-----+----------
5 | 2
4 | 1
我可以使用以下命令在SQL中轻松完成此操作
select max(id) as last,parent_id from tree group by parent_id
解决方法
最后,我发现了一个可能的解决方法:我删除了Meta类中的顺序,结果是预期的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。