Помочь со вложенными url на Джанго
Имеются url следующего вида:
Сайт/категория
Сайт/подкатегория
сайт/статья
class Category(MPTTModel):
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children',verbose_name='Главная категория') def get_absolute_url(self): return reverse('blog:category_url', args=[self.slug])class Post(models.Model):
rubrics = TreeManyToManyField(Category, related_name='rubrics', verbose_name='Категория') def get_absolute_url(self): return reverse('blog:post_detail', args=[self.slug ])
ссылки должны получиться такие
Сайт/категория
Сайт/категория/подкатегория
сайт/категория/подкатегория/статья
Сам принцип понимаю: при переходе, например, в подкатегорию, ссылки должны передаваться два параметра, это слаг главной категории и подкатегории. Во вьюхе, в функции должны определить эти параметры, но сделать это правильно не получается.
Прошу проконсультировать. За персональную консультацию заплачу (цену называете вы)
Ответы (1 шт):
в urls.py настрой пути
path(r'<slug:slug_category>', your_category_view, name='category_url'),
path(r'<slug:slug_category>/<slug:slug_sub>', your_sub_view, name='sub_url'),
path(r'<slug:slug_category>/<slug:slug_sub>/<slug:slug_artickle>', artickle_url, name='post_detail'),
дальше для категорий/подкатегорий
def get_absolute_url(self):
if self.parent:
return reverse('blog:sub_url', args=[self.parent.slug, self.slug])
else:
return reverse('blog:category_url', args=[self.slug])
для статей, тут не совсем понятно как ты хочешь получать абсолютный урл, ведь у тебя идет привязка ManyToMany, следовательно таких урл может быть несколько и непонятно какой из них тебе нужен в данный момент, сделаю пока первый
def get_absolute_url(self):
category = self.rubrics.first()
return reverse('blog:post_detail', args=[category.parent.slug, category.slug, self.slug ])