假设我有一本带有字段的模型书:
(保持简单:))
现在假设我们的数据库中有多行书籍。
如何查询数据库以接收具有相同作者的Book对象数组?
array = Book.objects.filter(author='JK Rowling')
- >返回一个QuerySet
但我想要一个Book对象数组。
[{id:1, name:'HP 1', author: 'JK Rowling'},{id:2, name:'HP 2', author: 'JK Rowling'},{id:3, name:'HP 3', author: 'JK Rowling'}]
答案 0 :(得分:1)
查询集是 Book对象的数组。你在那里展示的是一个字典列表,这完全是另一回事。您可以使用values()
:
Book.objects.filter(author='JK Rowling').values()
请注意,通过执行此操作,您将失去与返回实际Book对象本身相关的所有功能,例如调用其方法,修改并将其保存回db等的能力。除非您有充分的理由,你应该坚持实际的查询集。
答案 1 :(得分:0)
您可以使用__dict__
特殊方法从任意对象构建字典。
理解查询集将允许您构建这些词典的列表。
e.g。
queryset = Book.objects.filter(author='JK Rowling')
array = [book.__dict__ for book in queryset]