Запрос Django для последней версии объекта

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

  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

что ты уже испробовал? любой запрос Django, который дает ошибку?

Pratibha 19.03.2019 02:04

Я ничего не пробовал, я просто не могу обдумать такой запрос в django. пожалуйста помоги. Я мог бы легко просто взять список заданий и просмотреть последнюю версию каждой задачи, но должен быть лучший способ.

user2962698 19.03.2019 02:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Другие вопросы по теме