Допустим, я моделирования VCS с Django, используя модель что-то вроде этого:В Django, как я могу получить все самые последние версии моих объектов?
class VCSItem(models.Model):
directory = models.CharField()
name = models.CharField()
revision = models.IntegerField()
Теперь (каталог, имя) однозначно идентифицировать элемент отслеживаемых моей системы, но каждый элемент может иметь несколько версий.
Я хотел бы перечислить все элементы, где каждый элемент имеет максимальную отслеживаемую ревизию для моей системы. У Django есть встроенные функции для этого?
В худшем случае, я мог бы сделать это самостоятельно с чем-то вроде:
newest_items = {}
for item in VCSItem.objects.all().order_by("revision"):
newest_item[item.directory + item.name] = item
Недостатком является то, что я должен извлечь все записи из базы данных и цикла по каждому - то, что я предпочел бы избежать если возможно.
Этот подход не возвращает полный объект, но Dict, содержащий 'directory',' name' и 'max_rev'. Есть ли гладкий способ получить весь объект? –