为了账号安全,请及时绑定邮箱和手机立即绑定

Django查询对象的最新版本

Django查询对象的最新版本

吃鸡游戏 2021-12-09 10:42:39
我正在尝试在 Django 中编写一个查询,但我不确定编写它的最佳方法是什么。还假设数据库是mySQL。如果使用 distinct ,这很重要。  class Homework(models.Model):    title = TextField()  class Assignment(models.Model):      homework_id = Foreignkey(Homework, on_delete=models.CASCADE)      task = IntegerField(default=1)      version = IntegerField(default=1)鉴于上述模型,我想获得特定作业中的所有作业,其中作业是任务的最新版本。例子:Homework_id: 1    assignment v1, t1    assignment v2, t1    assignment v1, t2如果我有一个作业对象,其中包含任务 1 和分配任务 2 的作业,那么结果查询应该返回 Assignment t1, v2  and  Assignment t2, v1v refers to versiont refers to task
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

您可以尝试使用最大版本号来注释任务,如下所示:

Assignment.objects.filter(homework_id=1).values('task').annotate(version=Max('version'))

这会让你得到类似的东西:

<QuerySet [{'task': 1, 'version': 2}, {'task': 2, 'version': 1}]>


查看完整回答
反对 回复 2021-12-09
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信