Запрос Django для последней версии объекта - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь написать запрос в Django, но я не уверен, что лучший способ написать это. Также предполагается, что база данных - MySQL. Это имеет значение, если используется отличный.

  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

1 Ответ

4 голосов
/ 19 марта 2019

Вы можете попробовать пометить задачи с максимальным номером версии следующим образом:

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

Что даст вам что-то вроде:

<QuerySet [{'task': 1, 'version': 2}, {'task': 2, 'version': 1}]>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...