Django 根据类别计算相似的帖子不起作用

Django Calculate Similar Posts Based On Categories Not Working

我想根据类别计算相似帖子。这是我到目前为止在模型中的内容:

class Post(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE, default=15)

    def get_related_posts_by_tags(self):
       category = get_object_or_404(Category, name=self.category.title)
       posts = Post.objects.filter(category=category)
       return posts

class Category(models.Model):
    name = models.CharField(max_length=250, unique=True)

在我的模板中:

{% for posts in object.get_related_post_by_tag %}
   {{ posts.title }}
{% endfor %}

出于某种原因,这不起作用,并且在我的模板中,我没有看到任何具有相同类别的帖子。这就是为什么我想知道我是否做错了,或者如果我没有什么问题我很容易解决。感谢大家的帮助。

您可以使用:

class Post(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE, default=15)

    def get_related_posts_by_tags(self):
       return Post.objects.filter(category_id=self.category_id)

这也将阻止在以后不使用的情况下将 Category 对象加载到内存中。

您可能想排除当前的 post,在这种情况下,您可以使用:

class Post(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE, default=15)

    def get_related_posts_by_tags(self):
       return Post.objects.filter(
           category_id=self.category_id
        ).exclude(pk=self.pk)

在您的模板中还有一个错字:它是get_related_post<b>s</b>_by_tags,所以_posts_,不是 _post_

{% for posts in object<b>.get_related_posts_by_tags</b> %}
   {{ posts.title }}
{% endfor %}