首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django: Queryset按集合替换组吗?

Django: Queryset按集合替换组吗?
EN

Stack Overflow用户
提问于 2014-07-01 10:42:29
回答 2查看 149关注 0票数 2

我的桌子结构:

代码语言:javascript
复制
id | file_id(foreign key) | version_id(foreign key) | function_id(foreign key)

id和(file_id,version_id,function_id)是唯一的。

我正在寻找能够模拟以下sql查询的Django queryset:

代码语言:javascript
复制
select *, max(version_id) from change_metrics group by function_id order by version_id

基本上,我需要为所有唯一的文件函数组合获得最新版本的,因为可以存在多个特定文件函数组合的版本。我目前正在使用原始sql查询,我希望用querysets替换它们。

我不能更改数据库结构,但我对各种sql查询或解决此问题的方法都是开放的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-01 13:46:44

假设您的模型如下所示:

代码语言:javascript
复制
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)

您应该能够做到以下几点:

代码语言:javascript
复制
from django.db.models import Max
Function.objects.all().annotate(max_version=Max('changemetric_set__version___id'))
票数 1
EN

Stack Overflow用户

发布于 2014-07-01 14:35:02

您可以使用:

从change_metrics.objects.annotate(Max('version_id')).order_by('version_id')导入Max Q= django.db.models

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24508268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档