Сделал вот такой набросок, к которому я хочу прийти:
Проблема в том что я никак не соображу что мне делать дальше и какие теги нужно вписывать в шаблон чтобы выводить мне нужную информацию, может нужно views переделать, старался воспользоваться помощью гугла, просмотрел чуть ли не каждую страничкой с упоминанием нужной мне информации но ничего дельного не нашёл. Я хочу сделать страницу категорий точь в точь как на наброске.
Никак не соображу как это воплотить в реальность, в данный момент имею такой функционал (используется django-mptt)
views.py
def show_category(request, hierarchy=None):
hierarchy = (hierarchy or "").strip("/") # Remove stray slashes
if hierarchy:
category_slug = hierarchy.split('/')
parent = None
for slug in category_slug[:-1]:
parent = Categories.objects.get(parent=parent, slug=slug)
category = Categories.objects.get(parent=parent, slug=category_slug[-1])
else:
category = None
if category:
return render(request, 'shop/categories.html', {'instance': category})
# No category, show top-level content somehow
category = Categories.objects.all()
return render(request, 'shop/category.html', {'instance': category})
models.py
class Categories(MPTTModel):
title = models.CharField(max_length=250, db_index=True)
slug = models.SlugField(max_length=250, unique=True)
imagePath = models.ImageField(upload_to='images/categories/', blank=True, verbose_name='Изображение категории')
parent = TreeForeignKey('self', blank=True, null=True, related_name='children', on_delete=models.CASCADE)
class MPTTMeta:
order_insertion_by = ['title']
class Meta:
unique_together = (('parent', 'slug',))
verbose_name_plural = 'categories'
def get_slug_list(self):
try:
ancestors = self.get_ancestors(include_self=True)
except:
ancestors = []
else:
ancestors = [i.slug for i in ancestors]
slugs = []
for i in range(len(ancestors)):
slugs.append('/'.join(ancestors[:i + 1]))
return slugs
def __str__(self):
return self.title
Шаблонные файлы category и categories:
тут
Пожалуйста помогите реализовать эту страничку, уже обратиться некуда. Очень много гуглил, но ничего нужного не нашёл.