Неправильный вывод родителей для результатов поиска в древовидной структуре
Я пытаюсь ввести родителей для результата поиска, чтобы пользователь понимал, в каком узле находится значение. Вывод получается некорректным. Как убрать лишние????
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 %}
Выходные результаты: введите описание изображения здесь
Необходимо: введите описание изображения здесь