Привет!
Есть
mptt и django.
Допустим, есть таски в виде дерева и теги у тасков. Так как просто добавлять теги нельзя (будет tree corruption при выборках), я решил сделать такую логику, чтобы теги родительских тасков были подмножеством тегов детей, но при этом чтобы дети могли иметь свои самостоятельные теги.
Таким образом это дерево будет валидным:
Задача 1; Тег 1
Задача 2; Тег 1, Тег 2
Задача 3; Тег 1, Тег 3
Задача 4; Тег 1, Тег 3, Тег 4
Проблема в выборках по тегам. Несмотря на то, что при выборке по Тегу 3 в этом примере дерево не будет сломано (не будет пустот между уровнями вложенности), MPTT template tags не хотят рендерить такое дерево, они просто не отображают его на странице. Видимо, потому что отсутствует корневая нода.
Я полагаю, что решение проблемы лежит в переписывании их template tags, но я совершенно не знаю принцип работы nested sets и не в курсе, как работают template tags, и чтобы просто научить MPTT такому примитиву, придётся убить кучу времени. Может, вы знаете решение проще? :)
UPD.
Видимо, я непонятно выразился. Проблема есть конкретно на стадии шаблона. У меня имеется валидная выборка, которую template tag
recursetree не хочет рендерить, потому что, как я полагаю, он не умеет рендерить не с корневой ноды. Вопрос конкретный: как это починить или можно ли навелосипедить малой кровью?
Одно решение уже всплыло: делать полную выборку (в том числе и с родителями, у которых этого тега нет), но на стороне шаблона проверять наличие нужного тега. Нет тега — гуляй. Но это велосипед, конечно.