我的桌子结构:
id | file_id(foreign key) | version_id(foreign key) | function_id(foreign key)id和(file_id,version_id,function_id)是唯一的。
我正在寻找能够模拟以下sql查询的Django queryset:
select *, max(version_id) from change_metrics group by function_id order by version_id基本上,我需要为所有唯一的文件函数组合获得最新版本的,因为可以存在多个特定文件函数组合的版本。我目前正在使用原始sql查询,我希望用querysets替换它们。
我不能更改数据库结构,但我对各种sql查询或解决此问题的方法都是开放的
发布于 2014-07-01 13:46:44
假设您的模型如下所示:
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'))发布于 2014-07-01 14:35:02
您可以使用:
从change_metrics.objects.annotate(Max('version_id')).order_by('version_id')导入Max Q= django.db.models
https://stackoverflow.com/questions/24508268
复制相似问题