Django-在多个字段上注释并加载相关对象

时间:2020-07-28 15:21:43

标签: django django-orm

假设我有以下型号

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

class Publisher(models.Model):
    name = models.CharField(max_length=25)
    ...

class Book(models.Model):
    author = models.ForeignKey(Author)
    publisher = models.ForeignKey(Publisher)
    ...

由于某种原因,我想按作者和出版者查询书籍和分组结果,所以:

books = Book.objects.values('author', 'publisher').annotate('sth'=Avg('sth_else'))

结果如下:

<BookQuerySet [{'author': 2, 'publisher': 1, 'sth': 1.0}]>

是否可以加载整个Author和Publisher对象,而不仅仅是它们的相关ID?

1 个答案:

答案 0 :(得分:0)

恐怕不是。为了获得各自的作者和发布者对象。您可能只需要使用从查询中获得的ID并进行另一个查询。

authors = Author.objects.filter(id__in = authors)
publishers = Publisher.objects.filter(id__in = publishers)

作者,发布者是您上面获得的ID的列表

相关问题