我正在尝试在 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}]>
添加回答
举报
0/150
提交
取消