Python Django查询对象的最新版本

Python Django查询对象的最新版本,python,mysql,django,python-3.x,Python,Mysql,Django,Python 3.x,我正在尝试用Django编写一个查询,但我不确定编写这个查询的最佳方式是什么。还假设数据库是mySQL。如果使用distinct,这很重要 class Homework(models.Model): title = TextField() class Assignment(models.Model): homework_id = Foreignkey(Homework, on_delete=models.CASCADE) task = IntegerF

我正在尝试用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)

鉴于上述模型,我希望获得特定作业中的所有作业,其中作业是任务的最新版本。 例如:

如果我有一个作业对象,其中包含任务1和任务2的作业,则结果查询应返回
作业t1、v2和作业t2、v1

v refers to version
t refers to task

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

Assignment.objects.filter(homework_id=1).values('task').annotate(version=Max('version'))
这会让你感觉到:

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

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

Assignment.objects.filter(homework_id=1).values('task').annotate(version=Max('version'))
这会让你感觉到:

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


到目前为止,您尝试了什么?任何Django查询出现错误吗?我没有尝试过任何东西,只是无法在Django中执行类似的查询。请帮忙。我可以很容易地抓取任务列表,然后循环选择每个任务的最新版本,但必须有更好的方法。到目前为止,你尝试了什么?任何Django查询出现错误吗?我没有尝试过任何东西,只是无法在Django中执行类似的查询。请帮忙。我可以很容易地抓取任务列表并循环选择每个任务的最新版本,但必须有更好的方法。