Django переписывание представления функций в Class View ListView проблема с тегом

Я пытаюсь переписать все мое приложение с функциональных представлений на представления классов. Сейчас я пытаюсь справиться с тегами.

Вот как это выглядит раньше views.py

def tagged(request, slug):
    tag = get_object_or_404(Tag, slug=slug)
    articles = Article.objects.filter(tag=tag)

    paginator = Paginator(articles, 5)
    page_number = request.GET.get("page")
    page_obj = paginator.get_page(page_number)

    context = {
        "tag": tag,
        "page_obj": page_obj,
    }
    return render(request, "web/home.html", context)

И сейчас я пытаюсь переписать его в Class View но я не знаю, как использовать get_object_or_404 в классе и затем фильтровать мою модель Article по тегам

class Tagged(ListView):
    model = Article
    paginate_by = 5

model.py

class Article(models.Model):
    headline = models.CharField(max_length=100)
    article_content = models.CharField(max_length=10000)
    article_author = models.ForeignKey(User, on_delete=models.CASCADE)
    article_photos = models.URLField(blank=True, max_length=300)
    yt_links = models.URLField(blank=True, max_length=300)
    article_image_upload = models.ImageField(blank=True, upload_to="images/")
    slug = models.SlugField(null=True, unique=True, max_length=100)
    tag = TaggableManager(blank=True)
    likes = models.ManyToManyField(User, related_name="article_likes")
    timestamp = models.DateTimeField(auto_now_add=True)

    def serialize(self):

        return {
            "id": self.id,
            "headline": self.headline,
            "article_content": self.article_content,
            "article_author": self.article_author,
            "article_image_upload": self.article_image_upload,
            "tag": self.tag,
            "yt_links": self.yt_links,
            "likes": self.likes,
            "timestamp": self.timestamp.strftime("%b %d %Y, %I:%M %p"),

        }

Вы можете переопределить метод get_queryset для фильтрации Article. Например:

class Tagged(ListView):
    model = Article
    paginate_by = 5

    def get_queryset(self):
        tag = get_object_or_404(Tag, slug = self.kwargs['slug'])
        return super().get_queryset().filter(tag=tag)
Вернуться на верх