0

私が取り組んでいるプロジェクトの一環として、さまざまなタイプのオブジェクトの階層データ構造を構築しようとしています。

私はそれを使用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 自体を取得するたびに)。

この構造を維持すると同時に、スケーラブルなクエリですべてのデータを取得する方法を知っている人はいますか?

4

1 に答える 1