列出Python的查询过滤器的结果

时间:2018-06-21 09:22:59

标签: python django

我做了一个查询过滤器,返回的结果是元组形式。我希望它在列表中。

project_work = Project.objects.filter(title = topic).values()
lip = []

for con in project_work:
    lip.append(con)

这是输出:

  

[{'id':24,'title':'基于移动设备的遇险呼叫管理系统   对于大专院校的安全部门”,“ reg_num_id”:   '2014/15634','主管':'Mr. Jeff','platform':'MA','year':   '2018'}]

但是我想要一个这样的列表:

  

[用于安全性的基于移动电话的遇险呼叫管理系统   大专院校”,'2014/15634'.....]

2 个答案:

答案 0 :(得分:0)

在这种情况下,您应该使用.values_list(..)而不是 .values(..)

project_work = Project.objects.filter(title = topic).values_list()

这将返回一个元组列表,因为您的过滤器可以(至少理论上可以)返回 no multiple 行,因此我们使用列表。

如果要将元组转换为列表,可以对它们执行map ping:

project_work = list(map(list, Project.objects.filter(title = topic).values_list()))

所以这会给你类似的东西

[
    ['A mobile-based distress calls management system for security departments in tertiary institutions', '2014/15634',....]
]

如果您知道只有一个这样的元素,则可以改用.get(..)

project_work = list(Project.objects.values_list().get(title=topic))

这将产生类似的内容:

['A mobile-based distress calls management system for security departments in tertiary institutions', '2014/15634',....]

请注意,如果您未指定值的顺序(作为values_list的参数,则它将选择Django代表字段的顺序,这可能会很混乱。

答案 1 :(得分:0)

写:

for con in project_work:
    lip.append(list(con.values()))