Django MPTT: values で tree_id が SELECT されてしまう
仕様である
django-mptt の TreeQuerySet で values コールすると SQL に tree_id が追加されているのは、django-mptt がツリー構造を管理するために必要なカラムだからです²。tree_id は、同じツリーに属するノードに同じ値を持ちます²。例えば、以下のようなモデルがあるとします。
| |
このとき、以下のように values をコールすると、SQL に tree_id が追加されます²。
| |
| |
このようにして、django-mptt はツリー構造を効率的に扱うことができます²。
ソース: Bing との会話 2023/4/28
- (1) How to specify tree_id in new root? · Issue #189 · django-mptt …. https://github.com/django-mptt/django-mptt/issues/189.
- (2) python - In django, how to serialize mptt tree? - Stack Overflow. https://stackoverflow.com/questions/30817031/in-django-how-to-serialize-mptt-tree.
- (3) DjangoのIDにUUIDを設定する方法 - Qiita. https://qiita.com/shun198/items/6915d6bbd39ed41e09e9.
標準のQuerySetを明示的に使う
TreeQuerySetが使われなくなるので tree_id(など)が SELECT のフィールドに追加されない
| |