在由多个字段相关的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)提供平坦的结果,所以很高兴得到这个连接的查询集。
答案 0 :(得分:1)
您正在尝试访问作者和图书(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)]>