【问题标题】:Select Children of an Object With ForeignKey in Django?在Django中使用ForeignKey选择对象的子项?
【发布时间】:2010-08-20 23:47:34
【问题描述】:

我是 Django 的全新,所以这个问题的答案可能很简单。但是,我想不通。

假设我有两个准模型。

class Blog(models.Model):
    title = models.CharField(max_length=160)
    text = models.TextField()

class Comment(models.Model):
    blog = models.ForeignKey(Blog)
    text = models.TextField()

在 Python/Django shell 中,如果变量中有一个 Blog 对象(比如 blog = Blog.objects.get(id=3)),我如何选择它的所有子 cmets?

这似乎不起作用:blog.objects.all()

【问题讨论】:

  • 应该是 blog = models.ForeignKey(Blog) 吗?
  • @second 哎呀!是的,它应该。已编辑。

标签: python django


【解决方案1】:

跟随你使用的外键'向后'

blog.comment_set.all()

【讨论】:

  • 我不敢相信我在文档的“制作查询”页面上传递了它!谢谢!
  • 是的,但我认为 _set 函数用于 ManyToMany 关系以获取 ForeignKey 父级列表,而不是相反。
  • 有没有办法预取所有子元素?似乎 select_related 或 prefetch_related 只能以相反的方式工作
  • 我知道这是一个老问题,但只想提一下<model>_set 是默认值,除非在子模型上给出related_name。 "您可以通过在 ForeignKey 定义中设置 related_name 参数来覆盖 FOO_set 名称。" -- docs.djangoproject.com/en/3.0/topics/db/queries/…
猜你喜欢
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 2014-03-20
  • 2022-11-12
相关资源
最近更新 更多