簡體   English   中英

Django查詢對象的最新版本

[英]Django query for latest version of a object

我正在嘗試在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

您可以嘗試使用最大版本號注釋任務,如下所示:

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

這將為您提供以下信息:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM