Django模型在单个命令中查询所有字段,包括ManyToManyField

时间:2019-04-27 07:32:04

标签: python django django-models

在玩ManyToManyField时,我想知道有没有一种方法可以像使用ManyToManyField进行ForeignKey一样自动查询select_related()

表格:

class Author(models.Model):
  fullname = models.CharField(max_length=100)

class Foo(models.Model):
  bar = models.CharField(max_length=100)

class Book(models.Model):
  title = models.CharField(max_length=100)
  foo = models.ForeignKey(Foo)
  author = models.ManyToManyField(Author)

通常我会从Book获取我需要的数据

book = Book.objects.select_related('foo').get(pk=1)
authors = book.author.all()

进行2次旅行。有没有办法像select_related()那样组合它们?

1 个答案:

答案 0 :(得分:0)

您可以在M2M字段中使用prefetch_related

Book.objects.select_related('foo').prefetch_related('author').values('author', 'title').get(pk=1)