MPTT - Как переопределить "tree_id"
Я хочу переопределить поле 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 идентификатор объекта (thing_id) первого предка.
Является ли это возможным?
Как мне передать значение при создании объектов "Thing"?
Редактировать:
Таким образом, кажется, что решение для моих нужд просто: Thing.objects.get(pk=thing_id).get_descendants()
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