Я создаю веб-инструмент для управления ведомостями материалов (BOM). Мне удалось получить хорошую презентацию спецификаций, используя django
с js-tree
, но теперь я хотел бы поместить все это в базу данных. Мои деревья выглядят так:
- Root Part (ie Product A)
- PartA - Qty: 1
- PartB - Qty: 1
- PartC - Qty: 1
- Part D - Qty: 4
- Part E - Qty: 1
- Part F - Qty: 2
...
Проблема в том, что одна и та же деталь может присутствовать в разных продуктах или в разных сборочных узлах (например, винт для винта).
Я бы хотелось бы иметь возможность повторно использовать существующий узел (и его дочерние элементы) в другом дереве (например, у меня может быть Продукт B , который также включает Часть E (и, таким образом, Часть F )). Если я обновляю узел (ie Часть E ), изменение должно появиться во всех деревьях, где оно используется.
django-mptt
кажется хорошим кандидатом, но, к сожалению, узел может только есть один родитель Существует TreeManyToManyField
, но ничего в документации об этом нет, я не уверен, что это могло бы мне помочь.
Я мог бы создать Part
как обычную модель и иметь вторую модель Bom Structure
для создайте деревья, каждый экземпляр ссылаясь на Part
, но я не вижу, как он будет удерживать потомков части.
Как люди обычно решают эту проблему?