假设我正在使用 Django 对 VCS 进行建模,使用如下模型:
class VCSItem(models.Model):
directory = models.CharField()
name = models.CharField()
revision = models.IntegerField()
现在 (directory, name) 唯一标识我的系统跟踪的项目,但每个项目可能有多个修订。
我想列出所有项目,其中每个项目都有我系统的最大跟踪修订版。Django 是否为此提供了内置功能?
最坏的情况,我可以自己做,比如:
newest_items = {}
for item in VCSItem.objects.all().order_by("revision"):
newest_item[item.directory + item.name] = item
缺点是我必须从数据库中获取所有条目并循环遍历每个条目——如果可能的话,我宁愿避免这样做。