我的表结构:
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查询或解决此问题的方法
答案 0 :(得分:1)
假设您的模型如下所示:
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'))
答案 1 :(得分:0)
您可以使用:
来自django.db.models导入Max q = change_metrics.objects.annotate(Max('version_id'))。order_by('version_id')