私は、次のようtree_idフィールドを上書きしたい:MPTT - どのように「tree_id」を上書きするには
考える:
class Thing(MPTTModel):
thing_id = models.AutoField(primary_key=True)
...
class MPTTMeta:
tree_id = ?
私はthing_idでtree_idを開始したい「もの」最初の親を作成中オブジェクトが最初に保存されるときに割り当てられます。
次に、後で作成された「Thing」オブジェクトに対して、前に作成された最初の親のthing_idを渡したいと思います。
つまり、treeのすべてのノードはtree_idとして最初の祖先のobjectId(thing_id)を持ちます。
可能ですか?
"Thing"オブジェクトを作成する際にどのように値を渡す必要がありますか?
編集:
だから、私のニーズのためのソリューションは、単にあるようだ:Thing.objects.get(PK = thing_id).get_descendants()
私が欲しいのは、私の「物事」オブジェクトのサブセットを選択することです。ドキュメントでGenre.objects.all()の使用法を見て、逆ツリーの最初の祖先に関連するすべての「もの」がtree_idとして最初の祖先オブジェクトIDを持つ場合、それらを簡単に選択できるように考えました次のように:list = Thing.objects.filter(thing_type = 2、tree_id = thing_id) – bentzy
ノードの子孫を取得しようとしていますか?あなたは単にThing.objects.get(pk = 1).get_descendants()を使うことができます。 – craigds