来自多对多的扁平化列表

Flattened list from manytomany

在由 manytomany 字段关联的 2 个模型上创建完全外部联接的最佳(最快)方法是什么。

例如一本书和一位作者(通常在这种情况下您会使用外键),但假设一本书可以有 2 位作者(以我为例)。

例如:

class Author(models.Model):
    books = models.ManyToManyField(Book,related_name='book_author')

class Book(models.Model):
    title = models.CharField()

现在我想创建一个列表:(最好是一个查询集)

author1 , book1
author1,  book2
author2,  book1
author2,  book3
author3,  book4

可能因为周五的时间,但需要一些帮助...

我想向 api (DRF) 提供平面结果,因此最好能获得此连接的查询集。

您正在尝试访问作者和图书 (Book_authors) 之间的 auto-generated through model。你应该能够得到这样的结果

>>> Book.authors.through.objects.select_related('book', 'author')
<QuerySet [<Book_authors: Book_authors object>, ...>

要仅获取主键,您可以使用values_list

>>> Book.authors.through.objects.values_list('book', 'author')
<QuerySet [(1, 1), (1, 2), (1, 3)]>