我的表结构:
id | file_id(foreign key) | version_id(foreign key) | function_id(foreign key)
id 和 (file_id, version_id, function_id) 是唯一的。
我正在寻找可以模拟以下 sql 查询的 Django 查询集:
select *, max(version_id) from change_metrics group by function_id order by version_id
基本上我需要为所有独特的文件函数组合获取最新版本,因为特定文件函数组合可能存在多个版本。我目前正在使用原始 sql 查询,我想用查询集替换它们。
我无法更改数据库结构,但我愿意接受各种 sql 查询或解决此问题的方法
最佳答案
假设您的模型如下所示:
class Function(models.Model):
pass
class File(models.Model):
pass
class Version(models.Model):
pass
class ChangeMetric(models.Model):
function = models.ForeignKey(Function)
file = models.ForeignKey(File)
version = models.ForeignKey(Version)
您应该能够执行以下操作:
from django.db.models import Max
Function.objects.all().annotate(max_version=Max('changemetric_set__version___id'))
关于sql - Django:按聚合替换组的查询集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508268/