get queryset django-mptt
у меня есть модель
class Order(MPTTModel):
executor = models.ManyToManyField(CustomUser, verbose_name='Исполнитель', related_name='executor')
initiator = models.ForeignKey(
CustomUser, on_delete=models.SET_NULL, null=True, related_name='initiator', verbose_name='Инициатор'
)
parent = TreeForeignKey('self', related_name='children', on_delete=models.SET_NULL, blank=True, null=True)
description = models.CharField(max_length=300, verbose_name='Подробная информация')
До появления поля parent у меня был queryset:
return Order.objects.filter(
Q(initiator=request.user) | Q(executor=request.user)
).distinct()
Как мне исправить фильтр чтобы возвращалось все дерево если user есть хотя бы в одном узле?
Ответы (1 шт):
Автор решения: diosio
→ Ссылка
Кажется я решил эту проблему
def get_queryset_descendants(obj, nodes):
if not nodes:
return obj.objects.none()
filters = []
for n in nodes:
filters.append(Q(tree_id=n.tree_id))
return obj.objects.filter(reduce(operator.or_, filters))