django: как включить URL родительской категории в URL дочерней категории (Категория - это вложенная модель) - PullRequest
0 голосов
/ 01 августа 2020

Дело в том, что у меня есть модель с именем ProductCategory, эта модель может иметь или не иметь другую модель в качестве родительской категории. Считайте, что у меня есть три категории: grandParent -> parent -> child. В настоящее время, когда я нажимаю на дочернюю категорию, URL-адрес / productCategory / child, я также хочу включить его родителей. поэтому, если пользователь нажимает на "дочернюю" категорию, URL-адрес должен выглядеть так / grandParent / parent / child, в случае нажатия родительской категории он должен генерировать / grandparent / parent, и когда пользователь нажимает на продукт, я хочу объединить его URL-адрес с URL-адресом категории что-то вроде этого: / grandparent / parent / child / product_slug, не могли бы вы помочь мне с этим?

class ProductCategory(models.Model):
'''
product category model
'''
parent_category = models.ForeignKey(
    'self',
    verbose_name=_('Parent Category'),
    related_name=('sub_categories'),
    blank=True,
    null=True,
    on_delete=models.CASCADE
)

@property
def is_last_child(self):
    '''
    check whether current category is a parent for another category
    '''
    return self.sub_categories.count() == 0

@property
def is_root_category(self):
    '''
    Check wheter current category has no parent
    '''
    return self.parent_category is None

def get_absolute_url(self):
    return reverse('productcategory', kwargs={'slug': self.slug})

Обновление: это URL-адреса из Urls.py

path('productcategory/<slug>/', ProductCategoryView.as_view(), name='productcategory'),
path('product/<str:slug>/', ProductView.as_view(), name='product'),
...