私が取り組んでいるプロジェクトの一環として、さまざまなタイプのオブジェクトの階層データ構造を構築しようとしています。
私はそれを使用django-mptt
しました。これは、高速なクエリでツリーをスマートに処理することを約束します。
問題は、このデータ ツリーに参加する必要があるモデルが複数あるため、必要なデータを格納するためにジェネリック リレーションを使用したことです。
私が構築したモデルのスニペット:
class CPNode(MPTTModel):
content_type = models.ForeignKey(ContentType, null=True, blank=True)
object_id = models.PositiveIntegerField(null=True)
content_object = GenericForeignKey('content_type', 'object_id')
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
...
これにより、クエリの問題を除いて、私が望むものが得られます。
すべてのデータをクエリするには、複数のクエリが必要になると考えています (content_object 自体を取得するたびに)。
この構造を維持すると同時に、スケーラブルなクエリですべてのデータを取得する方法を知っている人はいますか?