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 %}
我想根据类别计算相似帖子。这是我到目前为止在模型中的内容:
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 %}