我在models.py类中有一些函数。目前,导出类中提到了所有字段。我想导出函数的所有字段,而不是提及增加代码行的每个特定字段。有什么办法我可以做到吗? 下面是导出函数的代码示例
def export_xlsx(self, request, queryset):
list_dict = []
idx = 0
for q in queryset:
list_dict += [{}]
list_dict[idx]['name'] = q.name
list_dict[idx]['place'] = q.place
list_dict[idx]['time'] = q.time
list_dict[idx]['date'] = q.date
list_dict[idx]['country'] = q.country
list_dict[idx]['city'] = q.city
idx += 1
h = [
'name',
'place',
'time',
'date',
'country',
'city']
gen_xlsx("export_file", h, list_dict, request)
return request
Django的查询集有一个
value()
方法,它生成{fieldname:fieldvalue}
dict而不是模型实例,因此假设您不希望检索相关的模型值,这应该可以解决您的问题:如果需要相关对象的值,则必须使用相关对象字段的
"relatedfield__fieldname"
语法(用于相关查找的语法相同)将所有所需字段名传递给values
,即如果country
实际上是带有name
字段的Country
模型的外键,并且希望在结果中包含国家名称,则需要:另外(不相关但…)将项目添加到列表中的方式非常复杂(而且效率不高)。您可以构建dict并将其附加到列表中:
可以进一步改进为列表表达式:
但是由于
queryset.values()
已经产生了dict,所以您真正需要的实际上是:相关问题 更多 >
编程相关推荐