Неправильный вывод родителей для результатов поиска в древовидной структуре

Я пытаюсь ввести родителей для результата поиска, чтобы пользователь понимал, в каком узле находится значение. Вывод получается некорректным. Как убрать лишние????

models.py

класс Composition(MPTTModel):

parent = TreeForeignKey('self', on_delete=models.CASCADE, blank=True, null=True, related_name='children', db_index=True, verbose_name='Родительская категория')
mapping = models.BooleanField(default=False, verbose_name='Отображение в дереве состава')
id_drawing = models.ImageField(upload_to='media/image/', blank=True, null=True, default='null', verbose_name='Рисунок')
position = models.PositiveIntegerField(verbose_name='Номер позции в родительской категории')
designstion = models.CharField(max_length=255, primary_key=True, verbose_name='Обозначение')
name = models.CharField(max_length=255, default='null', verbose_name='Наименование')
description = models.TextField(blank=True, null=True, default='null', verbose_name='Описание')
quantities = models.PositiveIntegerField(blank=True, null=True, default='null', verbose_name='Количество в родительской категории')
slug = models.SlugField(verbose_name="Альт. заголовок")

objects = TreeManager()
@property
def drawing_url(self):
    if self.id_drawing and hasattr(self.id_drawing, 'url'):
        return self.id_drawing.url

class MPTTMeta:
    order_insertion_by = ['designstion']


class Meta:
            # unique_together = [['parent', 'slug']]
            verbose_name = 'Спецификация'
            verbose_name_plural = 'Спецификация'


def get_absolute_url(self):
    return reverse('manual:catalog_page', args=[str(self.pk), str(self.slug)])

def __str__(self):
    return "%s (%s)" % (self.name, self.designstion)

view.py

def get_ancestors(unit): unit.designstion = unit.get_ancestors() вернуть единицу def catalog(request):

catalog_list = models.Composition.objects.filter(mapping=True)

if request.GET.get('q') != None:
    question = request.GET.get('q')

 **   seach_catalog =map(get_ancestors, Composition.objects.filter(Q(name__icontains=question)|Q(designstion__icontains=question)))**

    return render(request,
                  'catalog.html',
                  {
                      'catalog_list': catalog_list,
                      'seach_catalog': seach_catalog,

                  })
else: return render(request,
                  'catalog.html',
                  {
                      'catalog_list': catalog_list,

                  })

html

    {% for unite in seach_catalog %}
  • {{ unite.name}}
        <div> {{ unite.designstion }}</div>
    
        </li>
    {% endfor %}
    

Выходные результаты: введите описание изображения здесь

Необходимо: введите описание изображения здесь

Вернуться на верх