来自多对多的扁平化列表
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)]>
在由 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)]>