次のようなモデルを使用して、Django で VCS をモデリングしているとしましょう。
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
欠点は、データベースからすべてのエントリをフェッチし、それぞれをループする必要があることです。これは、できれば避けたいことです。