在我的应用中,有一个类别和子类别的列表,其中有一个ForeignKey的关系。比如说,有
我希望得到以下子类的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'),
]
我想原因是 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)
*注: - 请理解背后的逻辑。对于这一点,多做研究。