0

管理者のフラットリストよりも使いやすいものを提供することにより、django-mptt と contrib.admin を結び付けようとしています。ツリーは大きいはずなので (そうでなければネストされたセットを使用しないでしょう)、ユーザーはその一部を展開したり折りたたんだりできるはずです。

ユーザーがブランチを展開、折りたたみ、または展開すると (そのために ajax が使用されます)、折りたたまれたブランチのコンマ区切りリストを含む Cookie も設定されます。このようにして、次にこのユーザーが私の django-mptt を利用したモデルの管理者にアクセスしたときに、彼が残した正確な状態のツリーを彼に見せることができます。ここで、この折りたたまれたブランチのリストを使用して、ツリーの必要な部分のみを取得することでデータベースの負担を軽減したいと考えています。

これを効果的に行う方法はありますか?私がグーグルで検索したソリューションは、ブランチが折りたたまれたときにクエリを実行するのを避けることができるように、ブランチごとにクエリを作成していましたが、それはあまり効果的ではありません。固定数のクエリで可能でしょうか?

4

1 に答える 1

0

あなたは自分が何をしているのかを本当に説明していないので、助けるのは少し難しい. (ツリーで何をしていますか? どのように表示していますか? ユーザーに何ができるようにしたいですか?)

Django-MPTT ツリーの各要素にはget_children()メソッドがあり、オプションのinclude_self=Trueパラメーターを使用すると、要素とそのすべての子のリストを取得できます。これを使用してサブツリーを事前にフィルタリングし、必要に応じてその一部のみを表示できます。

ユーザーがページをリロードせずにツリーの一部を動的に展開したり折りたたんだりできるようにする場合は、AJAX を使用する必要があります。さまざまな AJAX 対応のツリービュー コントロールが存在します (私は jQuery を使用して自分で作成しました)。そのうちの 1 つが、あなたが望む方向に沿って何かを実行することは間違いありません。

于 2009-05-21T19:20:35.273 に答える