2

我想覆盖 tree_id 字段如下:

鉴于:

class Thing(MPTTModel):
    thing_id = models.AutoField(primary_key=True)
    ...

    class MPTTMeta:
        tree_id = ?

在创建“事物”第一个父级时,我想使用首次保存对象时分配的 thing_id 来启动 tree_id。

接下来,对于稍后创建的“事物”对象,我想传递之前创建的第一个父对象的 thing_id。

即树上的所有节点都将具有第一个祖先的objectId(thing_id)作为tree_id。

是否可以?

创建“事物”对象时如何传递值?

编辑:

所以看来我需要的解决方案仅仅是: Thing.objects.get(pk=thing_id).get_descendants()

4

1 回答 1

1

我不知道你想做什么。tree_id是一个django-mptt内部字段,在mptt算法之外没有太大意义。

也许您正在尝试按 对树进行排序thing_id,以便祖先最古老的事物首先出现在树中?我不知道您为什么要这样做,但如果是这样,您可能应该使用order_insertion_by.

class MPTTMeta:
    order_insertion_by = ['thing_id']

文档:http ://django-mptt.github.com/django-mptt/models.html#model-options

于 2012-03-29T18:37:50.457 回答