猿问

Django查询对象的最新版本

我正在尝试在 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, v1


v refers to version

t refers to task


吃鸡游戏
浏览 151回答 1
1回答

慕神8447489

您可以尝试使用最大版本号来注释任务,如下所示:Assignment.objects.filter(homework_id=1).values('task').annotate(version=Max('version'))这会让你得到类似的东西:<QuerySet&nbsp;[{'task':&nbsp;1,&nbsp;'version':&nbsp;2},&nbsp;{'task':&nbsp;2,&nbsp;'version':&nbsp;1}]>
随时随地看视频慕课网APP

相关分类

Python
我要回答