Sql Django ORM-理解外键查询

Sql Django ORM-理解外键查询,sql,django,orm,Sql,Django,Orm,我正在优化我的查询。假设我有这些模型: class Author(models.Model): name = models.CharField(max_length=20) class Book(models.Model): name = models.CharField(max_length=20) author = models.ForeignKey(Author) 这里的一个简单任务是获取给定作者的所有书籍,假设我有作者ID 在标准SQL中,我只需要查询books表 但在

我正在优化我的查询。假设我有这些模型:

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


class Book(models.Model):
  name = models.CharField(max_length=20)
  author = models.ForeignKey(Author)
这里的一个简单任务是获取给定作者的所有书籍,假设我有作者ID

在标准SQL中,我只需要查询books表

但在django代码中,我会:

# given authorID
author = Author.objects.get(pk=authorID)
books = Book.objects.filter(author=author)
这需要两个问题。如何避免第一次查询?

尝试以下方法:

Book.objects.filter(author_id=authorID)
这将返回作者外键为authorID的所有书籍。

请尝试以下操作:

Book.objects.filter(author_id=authorID)
这将返回作者外键为authorID的所有书籍。

请尝试以下操作:

Book.objects.filter(author_id=authorID)
这将返回作者外键为authorID的所有书籍。

请尝试以下操作:

Book.objects.filter(author_id=authorID)

这将返回所有作者外键为authorID的书籍。

如果我想在一个查询中创建一本新书,该怎么办?我的意思是:Book.objects.create(name=“name”,author=…),如果我想在一个查询中创建一本新书呢?我的意思是:Book.objects.create(name=“name”,author=…),如果我想在一个查询中创建一本新书呢?我的意思是:Book.objects.create(name=“name”,author=…),如果我想在一个查询中创建一本新书呢?我的意思是:Book.objects.create(name=“name”,author=…)