我正在学习Django并且已经完成了各种教程。我创建了一个基本的博客网站,但想添加标记功能。它有效 - 我有分配标签的帖子,但我现在很难在帖子中列出这些标签。
博客/ models.py:
class Post(models.Model):
title = models.CharField(max_length=50)
text = models.CharField(max_length=1000)
pub_date = models.DateTimeField('date published')
author = models.CharField(max_length=30)
mail = models.EmailField()
class Tag(models.Model):
name = models.CharField(max_length=15)
posts = models.ManyToManyField(Post, related_name="tags")
我知道我需要这样的东西:
Tag.objects.filter()
但是,请你指导我如何仅列出与特定帖子相关的内容?我正在尝试各种组合,但没有一个能够很好地工作......
答案 0 :(得分:1)
没有办法实现这一目标。
获取标记,查找发生的所有帖子。
try:
tag = Tag.objects.get(name="#blawBlaw")
posts_of_that_tag = tag.posts.all()
except Tag.DoesNotExist:
pass
其他方式: 获取帖子并找到它的标签
try:
p = Post.Objects.get(id=1)
tags = p.tag_set.all();
except Post.DoesNotExist:
pass
答案 1 :(得分:0)
这就是我解决我的问题的方式。与@Sagar略有不同 我想获取与我的博客文章相关的标签。
我使用复数形式的标签,而不是使用tags_set。
# object containing title, body etc
post = Post.objects.get(slug=slug)
# get all the tags
p = Post.objects.get(id=post.id)
tags = p.tags.all()