MPTT - Как переопределить «tree_id» - PullRequest
2 голосов
/ 29 марта 2012

Я хочу переопределить поле tree_id следующим образом:

Учитывая:

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

    class MPTTMeta:
        tree_id = ?

При создании первого родителя "Thing" я хочу инициировать tree_id с назначенным thing_id, когда объектсначала сохранено.

Далее, для объектов "Thing", созданных позже, я хочу передать thing_id первого созданного ранее родителя.

т.е. все узлы в дереве будут иметь значение tree_id objectId (thing_id) первого предка.

Возможно ли это?

Как мне передать значение при создании объектов "Thing"?

Редактировать:

Так что, похоже, решение для моих нужд просто: Thing.objects.get (pk = thing_id) .get_descendants ()

1 Ответ

1 голос
/ 29 марта 2012

Я не знаю, что вы пытаетесь сделать. 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

...