【问题标题】:What are the current ways to get_absolute_url for django-mptt?当前获取 django-mptt 的绝对 URL 的方法是什么?
【发布时间】:2021-10-19 14:32:41
【问题描述】:

我阅读了其他问题,但我没有发现任何对 Django 3 有用的东西,它们只是不起作用。

需要这样的链接类型:post/categories/subcategories/**etc

我认为一个适当的答案对每个人都有用。

告诉我如何为 DetailView 做这件事

class Category(MPTTModel):
title = models.CharField(max_length=255, verbose_name=_('Заголовок'))
slug = models.SlugField(max_length=255, verbose_name=_('URL'), blank=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.CASCADE)

class MPTTMeta:
    order_insertion_by = ['title']

class Meta:
    unique_together = ['parent', 'slug']
    verbose_name = _('Категория')
    verbose_name_plural = _('Категории')

urls.py

urlpatterns = [
path('category/<slug:slug>/', CategoryListView.as_view(), name='category_detail'),
]

views.py

class CategoryListView(ListView):
model = Category
template_name = 'modules/post/category_detail.html'
context_object_name = 'category'
queryset = Category.objects.all()

def get_queryset(self):
    queryset = self.queryset.filter(slug=self.kwargs['slug'])
    return queryset

【问题讨论】:

    标签: python django django-urls django-mptt


    【解决方案1】:

    你可以reverse urls

    代码库/urls.py
    urlpatterns = [
        path('', include('my_app.urls', namespace='my_app_namespace')),
    ]
    
    代码库/my_app/urls.py
    urlpatterns = [
        path('category/<int:my_var>', views.my_view, name='my_view_name'),
    ]
    
    代码库/any_python_file.py
    from django.urls import reverse
    reverse('my_app_namespace:my_view_name', args=[my_var])
    >>> 'https://...'
    

    【讨论】:

    • 您好!感谢您的回答。我明白这一点。我要求为类别树执行此操作,即针对具有嵌套类别的 mptt 模型。
    • 很抱歉,我不了解您的需求。你能通过编辑你的帖子来解释更多细节吗?
    猜你喜欢
    • 2010-12-02
    • 2013-07-25
    • 2011-09-26
    • 2010-09-08
    • 1970-01-01
    • 2023-04-03
    • 2011-01-08
    • 2015-11-07
    相关资源
    最近更新 更多