問題タブ [mptt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - django-mpttを使用してFeinCMSページツリーのコピーを作成すると、子の順序が変更されます
django-mpttを使用して管理されているFeinCMSページツリーのコピーを作成しようとしています。私はこの関数を書きました:
を使用してそれを呼び出します
一般的には機能しますが、次のようなページツリーがある場合:
それは次のように出てきます:
mpttコードをステップスルーすると、魔法はmptt / managers.py / _inter_tree_move_and_close_gap()で発生しているように見えます。ここで、何らかの理由で孫の「lft」値が変更されます。移動前はC=3、D = 5、その後はC = 5、D=3です。
これは、DがCの前にソートされる理由を説明していますが、これらの値が切り替わる理由がわかりません。何かご意見は?
php - PHPはMySqlデータベースを変更せずにMPTTを表示する必要があります
表示する必要のあるMPTTで編成されたMySqlデータベースがあり、レベル制限はなく、データベースを変更できません。http://mikehillyer.com/articles/managing-hierarchical-data-in-mysqlを試しました。 /、しかしそれでも私にいくつかの頭痛の種がありました。
python - django-mptt がデータを正しくリンクしていない
ヘイ、私はMPTTを使用して、会話を含むモデルからツリーのようなデータを作成しています。それらを「投票」フィールドで並べ替えたいと思っています。
モデルは現時点ではこのように見えますが、非常に基本的です。
ご覧のとおり、メッセージ フィールド、スレッド モデルにリンクされた親 FK、および投票があります。
私の見解の中で私はこれを持っています
次に、私のテンプレート内
ただし、出力されるリストはすべてのスレッドのリストです。それらのどれも一緒にリンクされていません。
何か案は?
php - パスでMPTTスタイルテーブルをクエリする最も効率的な方法は何ですか?
MPTTメソッドを使用して階層データを格納するMySQLテーブルがあります。このテーブルには、各行の短い文字列識別子(スラッグ)を格納する列もあります。
これらのスラッグで構成されるパスが与えられたときに、テーブルをクエリして正しい行を見つけられるようにしたいと思います。foo/bar
つまり、可能な限り最も効率的な方法でそれが表す行を見つけたいパスを指定します。
これを単一のSQLクエリで実行できますか?そうでない場合、正しい結果を得るためにいくつかのクエリをつなぎ合わせる最も効率的な方法は何でしょうか?私は自分のアプリでPHPを使用しています。これは、SQLクエリだけで実行できない場合に関連する可能性があります。
mysql - (MySQL) MPTT / Nested Set Model の集約関数
そこで、MySQL を使用し、ネストされたセット/修正済みプレオーダー ツリー トラバーサル モデルに基づくカテゴリ構造を、次category_id
のフィールドを持つ「nested_category」というテーブル名に格納しています
。name
lft
rgt
published
published
1 または 0 のいずれかです... 1 の場合、カテゴリはライブ サイトに表示されます。0 の場合、ライブ サイトに表示されません。さらに重要なことに、その未公開カテゴリの子もライブ サイトに表示されません。
published=1
を持つすべてのカテゴリをリストし、 を持つカテゴリの子孫であるすべてのカテゴリを無視するクエリを書くのに問題がありますpublished=0
。
現時点で私は使用しています:
親が「非公開」のときに「子」カテゴリを無視する方法が本当にわかりません。
product_id
また、これをフィールドname
を持つ「new_products」テーブルにリンクしようとしています。私はここまで来ました:stock
price
category_id
published=1
上記のクエリは最初のクエリを使用しているため、「未公開」のカテゴリや製品は返されませんが、「公開済み」カテゴリが「未公開」カテゴリの子孫である場合は考慮されません。これが理にかなっていることを願っています!
python - ノードのリストについてはdjango-mpttget_descendants
descendants(include_self=True)
1つのノードではなく、ノードのリスト(QuerySet)のすべてを取得しようとしています。これは1つのSQLクエリである必要があります。
例(実際には機能していません:)
私が今持っている唯一のアイデアは、some_nodesを反復処理し、すべてのノードに対してget_descendants()を実行することですが、これはひどい解決策です(SQLクエリがたくさんあります)。
Django ORMを介してそれを行うクリーンな方法がない場合、代わりに実行するカスタムSQLを提供できますか?ここで、私がノードのpkのリストを持っていると仮定できます。
編集:それが役立つ場合-私の「some_nodes」はすべて同じ親ディレクトリに配置され、ツリー内で同じ「レベル」を持ちます。
python - mptt クエリセットの祖先のクエリセットを取得する効率的な関数
mptt クエリセットのすべての先祖を取得するための効率的なアルゴリズムを持っている人はいますか? これまでのところ、私が考えることができる最高のものは次のようなものです:
このアプローチには 2 つの問題があります。
- 隣り合っていないブランチがあると失敗します (つまり、実際には機能しません)。
- 最終的なクエリに句が含まれてしまうため、非常に非効率的で
number_of_trees*number_of_levels
あり、非常に高速に巨大化する可能性があります
祖先を別の場所にキャッシュすることにオープンですが、効率的に行う方法が思いつきません。先祖のIDのコンマ区切りリストを含むフィールドを追加してから、GROUP_CONCAT
(私はMySQLにいます)エクストラ内で実行することを検討しましたが、それは巨大/遅くなる可能性があると思います.
php - MySQL、PHP、MPTT: 子を weight/cost/menu_order で並べ替える
「page_menu_order」行で結果を並べたいが、同じ深さ内にある。
そのため、子は階層構造のままですが、その深さの範囲内では、コスト/価格/または page_menu_order で並べ替えられます。
php - CakePHP のツリー動作を使用して製品のカテゴリのみを表示する方法は?
私は CakePHP のツリー動作を使用しており、空のカテゴリを表示したくないため、カテゴリまたはサブカテゴリに製品があるかどうかを知る必要があります。
私はこのようなことをしたいと思います:
これは、不要な配列次元の設定を解除するための出発点になります。データベースでは、カテゴリには多くの製品があります。
この問題の最善の解決策は何ですか? category_id を使用して foreach ループで Product->find を回避することは可能ですか?