查询db以接收对象数组

时间:2017-05-21 20:32:04

标签: python django django-models

方案

假设我有一本带有字段的模型书:

  • ID
  • 姓名
  • 作者
  • 等级

(保持简单:))

现在假设我们的数据库中有多行书籍。

问题

如何查询数据库以接收具有相同作者的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'}]

2 个答案:

答案 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]