我試圖將我的整個應用程式從函式視圖重寫為類視圖。現在我和標簽斗爭。
這是它在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)
現在我正在嘗試將其重寫為類視圖,但我不知道如何在類中使用 get_object_or_404 然后按標簽過濾我的模型文章
class Tagged(ListView):
model = Article
paginate_by = 5
模型.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"),
}
uj5u.com熱心網友回復:
您可以覆寫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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523045.html
