Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用单个调用检索django模型中外键的数据?_Django_Python 2.7_Django Models - Fatal编程技术网

如何使用单个调用检索django模型中外键的数据?

如何使用单个调用检索django模型中外键的数据?,django,python-2.7,django-models,Django,Python 2.7,Django Models,我有两门课: class Author(models.Model): name = models.CharField(max_length=250, null=True) location = models.CharField(max_length=250, null=True) class Book(models.Model): author = models.ForeignKey(Author, null=True, related_name="book")

我有两门课:

class Author(models.Model):
     name = models.CharField(max_length=250, null=True)
     location = models.CharField(max_length=250, null=True)


class Book(models.Model):
    author = models.ForeignKey(Author, null=True, related_name="book")
    no_of_pages = models.IntegerField(null=True)
    genre = models.CharField(max_length=250, null=True)
我希望能够通过一次调用从书中访问作者的数据。 例如:


据我所知,这必须击中db几次。有没有一种方法可以通过一次调用获取作者的数据?

您可以使用select\u related

books = Book.objects.filter(genre="fiction").select_related("author")

这将只获取一次db,并自动加载
书籍中的
作者
模型

,因为您处于for循环中,所以只会多次命中db。你筛选出了几本书,因此你有几位作者需要迭代。
books = Book.objects.filter(genre="fiction").select_related("author")