Django - категория и slug в url

У меня есть функция, которая добавляет статью в избранное, когда пользователь нажимает на кнопку. Все было хорошо, пока я не решил добавить категорию в url адрес.

Ниже вы можете увидеть код, который я пытаюсь отладить.

models.py

class Article(models.Model):
    author = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
    title = models.CharField(max_length=254)
    category = models.ForeignKey(Category, on_delete = models.CASCADE, blank=True, related_name='articles')
    favourite = models.ManyToManyField(User, default=None, blank=True, related_name='favourite_article')
    slug = models.SlugField(unique=True, blank=True, max_length=254)
    

    def get_absolute_url(self):
        return reverse("article", kwargs={"category": self.category, "slug": self.slug})

views.py

@login_required
def FavouriteArticle(request, slug):
    article = get_object_or_404(Article, slug=slug)
    favourized = False
    if article.favourite.filter(id=request.user.id).exists():
        article.favourite.remove(request.user)
        favourized = False
    else:
        article.favourite.add(request.user)
        favourized = True
        messages.success(request, 'Article is now available in favourites.')
    return HttpResponseRedirect(reverse('article', args=[str(category), str(slug)]))

url.py

urlpatterns = [
    path('article/<category>/<slug:slug>', views.ArticleDetailView.as_view(), name='article'),
    path('favourite_article/<category>/<slug:slug>', views.FavouriteArticle, name='favourite_article'),
]

Не могли бы вы сообщить мне, что я делаю не так?

Редактирование:

Я пытался добавить категорию в качестве параметра следующим образом:

@login_required
def FavouriteArticle(request, category, slug):
    article = get_object_or_404(Article, category=category, slug=slug)
    favourized = False
    if article.favourite.filter(id=request.user.id).exists():
        article.favourite.remove(request.user)
        favourized = False
    else:
        article.favourite.add(request.user)
        favourized = True
        messages.success(request, 'Article is now available in favourites.')
    return HttpResponseRedirect(reverse('article', args=[str(category), str(slug)]))

Я также изменил url на

path('favourite_article/<str:category>/<slug:slug>', views.FavouriteArticle, name='favourite_article'),

Но я получаю Reverse for 'like_article' with arguments '('article-5',)' not found. 1 pattern(s) tried: ['like/(?P<category>[^/]+)/(?P<slug>[-a-zA-Z0-9_]+)$'] ошибку при входе на страницу.

Вернуться на верх