Django: захватить набор объектов из списка идентификаторов (и отсортировать по метке времени)

У меня есть список идентификаторов для объектов, которые мне нужно захватить, тогда мне нужно отсортировать их по метке времени. Вот как я собирался это сделать:

For i in object_ids:
  instance = Model.objects.get(id = i)
  # Append instance to list of instances 

#sort the instances list

Но меня беспокоят две вещи:

  • Нет ли способа захвата коллекции записей списком их идентификаторов - без необходимости цитировать?
  • Можно ли добавить произвольные объекты в QuerySet только на основе их идентификаторов?

Спасибо,

Ответ 1

Это можно сделать с помощью такого кода:

objects = Model.objects.filter(id__in=object_ids).order_by('-timestamp')

order_by может быть положительным или отрицательным timestamp, в зависимости от того, как вы хотите его сортировать.

Ответ 2

Попробуйте следующее:

result = Model.objects.filter(id__in=object_ids)

Это возвращает все Model объекты, которые имеют id в указанном списке object_ids. Таким образом, вам также не нужно добавлять дополнительные модели в полученный QuerySet.