@Heavy10110

Вложенное меню django?

Пытаюсь сделать вложенное меню в админке. Через FK self.

models.py

class Category(models.Model):
	parent = models.ForeignKey(
		'self',
		default=None,
		blank=True, null=True,
		on_delete=models.CASCADE,
		related_name='parent_%(class)s',
		verbose_name='parent comment'
	)
	name = models.CharField('Категория',max_length=20)
	slug = models.SlugField('Текст в url', max_length=200, unique=True)
	class Meta:
		ordering = ['name']
		verbose_name = 'Категория'
		verbose_name_plural = 'Категории'
	def __str__(self):
		return self.name
	def get_absolute_url(self):
		if self.sex == 'M':
			return reverse('category_for_men', args=[str(self.slug)]) 
		else:
			return reverse('category_for_women', args=[str(self.slug)])


Query
"post_list_for_man": Category.objects.all(),

template
{% for x in post_list_for_man %}
    {% if x.parent %}
    <li class="has-children">
    <a href="{{ x.parent.get_absolute_url }}" title="">{{ x.parent }}</a>
    <ul class="sub-menu">
    <li><a href="{{ x.get_absolute_url }}">{{ x }}</a></li>
    </ul>
    </li>
    {% endif %}
{% endfor %}


И если я добавлю следующим образом.
Категория
Подкатегория
Вторая подкатегория

Категория не имеет родителя
Подкатегория имеет родителя Категория
Вторая подкатегория имеет родителя Категория


Шаблон выдает x.parent 2 одинаковых значения - Категория, нужно одно, как-то юзать дистинкт.
Ну и соответственно в выпадающем меню у Категории подкатегории разные.
Как реализовать такое правильно?
  • Вопрос задан
  • 449 просмотров
Решения вопроса 1
@deliro
Агрессивное программирование
Посмотри на mptt и django-mptt
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы