首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何抓取具有相同标签的文章,以便在模板中显示这些文章?

如何抓取具有相同标签的文章,以便在模板中显示这些文章?
EN

Stack Overflow用户
提问于 2019-07-07 06:36:29
回答 1查看 42关注 0票数 1

我是Django的新手,所以谢谢你的帮助。我有一个文章模型,我想通过为每篇文章分配标签来显示相关/相似的文章。

我曾尝试在我的views.py中创建一个函数/过滤器,它继承自self (特定的文章),并过滤出具有相同标签的文章,但没有成功。

代码语言:javascript
代码运行次数:0
运行
复制
from django.db import models

class Article(models.Model):
  title = models.CharField(max_length=200, blank=True)
  thumbnail = models.ImageField(max_length=200, blank=True)
  tag = models.CharField(max_length=200, blank=True)

代码语言:javascript
代码运行次数:0
运行
复制
from .models import Article

class ArticleView(DetailView):
    template_name = "article/article.html"
    model = Article

    def related_articles(self):
        tagged = Article.objects.filter(tag=self.tag)
        
        return tagged

代码语言:javascript
代码运行次数:0
运行
复制
{% if articles.objects.all %}
  {% for article in article.objects.all|related_articles %}
  <div>
    <img src="{{ article.thumbnail.url }}">
    <span>{{ article.title }}</span>
  </div>
  {% endfor %}
{% endif %}

所以,每当我尝试使用这个过滤器时,我都得不到任何结果。

EN

回答 1

Stack Overflow用户

发布于 2019-07-07 08:01:36

我认为related_articles函数应该在模型类上。

代码语言:javascript
代码运行次数:0
运行
复制
from django.db import models

class Article(models.Model):
  title = models.CharField(max_length=200, blank=True)
  thumbnail = models.ImageField(max_length=200, blank=True)
  tag = models.CharField(max_length=200, blank=True)

  def related_articles(self):
    tagged = Article.objects.filter(tag=self.tag).exclude(pk=self.pk)

假设你有一个这样的视图:

代码语言:javascript
代码运行次数:0
运行
复制
def articles(request):
    articles = Articles.objects.all()
    context = dict(articles=articles)

    return render(request, 'app/articles.html', context)

你可以有一个这样的模板:

代码语言:javascript
代码运行次数:0
运行
复制
{% if articles|length %}
  {% for article in articles %}
  <div>
    <img src="{{ article.thumbnail.url }}">
    <span>{{ article.title }}</span>
    {% for related_article in article.related_articles %}
        <span>{{ related_article.title }}</span>
    {% endfor %}
  </div>
  {% endfor %}
{% endif %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56918095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档