Django为同一个子类生成多个URLs。

问题描述 投票:0回答:1

在我的应用中,有一个类别和子类别的列表,其中有一个ForeignKey的关系。比如说,有

  • 与Category1相关的Subcategory1
  • 与类别2相关的子类别2

我希望得到以下子类的URLs。

这些url可以正常工作。然而,django也生成了这些我不需要的URLs。

为什么它们会出现在我的应用程序中?我如何摆脱它们?先谢谢你

models.py:

class Category(models.Model):
    categoryslug = models.SlugField(max_length=200, default="",unique=True)

    def get_absolute_url(self):
        return reverse("showrooms_by_category",kwargs={'categoryslug': str(self.categoryslug)})

class Subcategory(models.Model):
    subcategoryslug = models.SlugField(max_length=200, default="",unique=True)
    category = models.ForeignKey('Category', related_name='subcategories', 
    null=True, blank=True, on_delete = models.CASCADE)

    def get_absolute_url(self):
        return reverse("showrooms_by_subcategory",
        kwargs={'categoryslug': str(self.category.categoryslug), 'subcategoryslug': str(self.subcategoryslug)})

views.py:

class ShowroomCategoryView(DetailView):
    model = Category
    context_object_name = 'showrooms_by_category'
    template_name = "website/category.html"
    slug_field = 'categoryslug'
    slug_url_kwarg = 'categoryslug'


class ShowroomSubcategoryView(DetailView):
    model = Subcategory
    context_object_name = 'showrooms_by_subcategory'
    template_name = "website/subcategory.html"
    slug_field = 'subcategoryslug'
    slug_url_kwarg = 'subcategoryslug'

urls.py:

urlpatterns = [
    path('<slug:categoryslug>/<slug:subcategoryslug>/', views.ShowroomSubcategoryView.as_view(), name='showrooms_by_subcategory'),
    path('<slug:categoryslug>/', views.ShowroomCategoryView.as_view(), name='showrooms_by_category'),
]
python django django-urls
1个回答
0
投票

我想原因是 foreign_key. 所以,我认为作为你可以使用一对一的字段来获取目标,如。

subcategoryslug = models.SlugField(max_length=200, default="",unique=True)
category = models.OneToOneField('Category', related_name='subcategories',null=True, blank=True, on_delete = models.CASCADE)

*注: - 请理解背后的逻辑。对于这一点,多做研究。

© www.soinside.com 2019 - 2024. All rights reserved.