django的manytomanyfield如何查询?

文章(Article)和tags是manytomany关系,系统会自动生成一个Article_tags的表,

现在遇到的问题是,

在视图里输入Article_tags的ID如/tag/110/

views里要根据id查询改tag对应的Article文章,得到文章的数据信息,再输出到网页模板里,

如何在Article_tags/Article 查询得到文章id,在代码书写上有些迷糊

阅读 12.9k
1 个回答

拿官方文档的例子来说明下:

@python_2_unicode_compatible
class Publication(models.Model):
    title = models.CharField(max_length=30)

    def __str__(self):
        return self.title


@python_2_unicode_compatible
class Article(models.Model):
    headline = models.CharField(max_length=100)
    publications = models.ManyToManyField(Publication, related_name='publications_article')

    def __str__(self):
        return self.headline

简单做下演示

# 创建出版商
In [4]: p1 = Publication.objects.create(title='hello')

# 创建文章
In [5]: a1 = Article.objects.create(headline='django')

# 此时出版商和文章还没有对应添加到 publication_article 表中,获取为空
In [6]: p1.publications_article.all()
Out[6]: <QuerySet []>

In [7]: p1.publications_article.add(a1)

# 获取此出版商出版的文章
In [8]: p1.publications_article.all()
Out[8]: <QuerySet [<Article: django>]>

# 获取出版此文章的出版商
In [9]: a1.publications.all()
Out[9]: <QuerySet [<Publication: hello>]>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题