Django 3 Несколько моделей во view - Page not found (404)
Есть 2 модели Category и Tag, которые хотелось бы выводить в 1 view.
model 1
class Category(MPTTModel):
""" Category"""
name = models.CharField(max_length=75)
slug = models.SlugField(max_length=75, unique=True, blank=True)
parent = TreeForeignKey(
"self",
verbose_name="Родительская категория",
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name='children'
)
def save(self, *args, **kwargs):
self.slug = gen_slug(self.name)
super().save(*args, **kwargs)
def __str__(self):
return f"{self.name}"
def get_absolute_url(self):
return reverse("category_detail_url", kwargs={"slug": self.slug})
class Meta:
verbose_name = "Категория"
verbose_name_plural = "Категории"
ordering = ['id']
model 2
class Tag(MPTTModel):
""" Tag """
name = models.CharField(max_length=75)
slug = models.SlugField(max_length=75, unique=True, blank=True)
category = models.ManyToManyField(Category, related_name='tag_category_rn', blank=True)
parent = TreeForeignKey(
"self",
verbose_name="Родительский тэг",
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name='children'
)
def save(self, *args, **kwargs):
self.slug = gen_slug(self.name)
super().save(*args, **kwargs)
def __str__(self):
return f"{self.name}"
def get_absolute_url(self):
return reverse("category_detail_url", kwargs={"slug": self.slug})
class Meta:
verbose_name = "Тэг"
verbose_name_plural = "Тэги"
ordering = ['id']
view
class CategoryDetailView(DetailView, MultipleObjectMixin):
""" Single Category """
model = Category
slug = "url"
paginate_by = 21
def get_context_data(self, **kwargs):
object_list = AddVideo.objects.all()
context = super(CategoryDetailView, self).get_context_data(object_list=object_list, **kwargs)
context['tag'] = Tag.objects.all()
return context
urls
urlpatterns = [
path('<slug:slug>', views.CategoryDetailView.as_view(), name="category_detail_url"),
]
Проблема в том, что объекты из модели Category отображаются нормально, а из модели Tag выдает ошибку:
Page not found (404)
slug:slug [name='category_detail_url']
The current path, tag-1, matched the last one.
Подскажите, пожалуйста, как решить данную проблему?