【问题标题】:Django fetch data from table that refers the given table as foreign keyDjango从将给定表引用为外键的表中获取数据
【发布时间】:2020-09-25 10:58:37
【问题描述】:

我见过几个使用select_related查询查询集中外键相关数据的例子。包括这个example。但我想以相反的方式进行,如下所述。

class Book(models.Model):
    name   = models.CharField(max_length=50)
    author = models.ForeignKey(Author)

class Author(models.Model):
    name   = models.CharField(max_length=50)

我已经看到查询集在查询图书时获取数据,因为在图书中指定了作者。像这样 books = Book.objects.all().select_related("author") 但是我需要查询作者,然后获取所有与之相关的书籍。有没有办法做到这一点。

【问题讨论】:

    标签: django python-3.x django-rest-framework


    【解决方案1】:

    您应该在 FK 定义中使用related_name

    class Book(models.Model):
        author = models.ForeignKey(Author, related_name="books")
    

    然后,从Author 你可以:

    Author.objects.all().prefetch_related("books")
    

    查看the docs了解更多信息。

    【讨论】:

    • 这行得通,但我只在发送响应时得到 id 字段。响应中未显示所有其他字段
    • 另外,select_related 对我不起作用。Prefetch 相关。
    • 你是对的,我的错。当你得到一组对象时,你使用prefetch_related。更新了答案
    猜你喜欢
    • 1970-01-01
    • 2019-11-03
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多