簡體   English   中英

在 Django 中按多對多關系列出標簽

[英]Listing tags by ManyToMany relationship in django

我正在學習 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()但你能指導我如何只列出與特定帖子相關的內容嗎? 我嘗試了各種組合,但沒有一個效果很好......

沒有辦法實現這一點。

獲取標簽,查找產生它的所有帖子。

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

我的就是這樣解決的。 與@Sagar 略有不同,我想獲取與我的博客文章相關的標簽。

我不使用tags_set,而是使用復數形式的tag,tags。

# 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM