MPTT - 如何覆盖“tree_id”

时间:2012-03-29 15:13:34

标签: django django-mptt mptt

我想覆盖tree_id字段,如下所示:

假设:

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

    class MPTTMeta:
        tree_id = ?

在创建“Thing”第一个父项时,我想在首次保存对象时分配thing_id来启动tree_id。

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

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

有可能吗?

如何在创建“Thing”对象时传递值?

编辑:

所以似乎我的需求的解决方案仅仅是:Thing.objects.get(pk = thing_id).get_descendants()

1 个答案:

答案 0 :(得分: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