导出导出函数中的所有函数以生成xlsx
我在models.py类中有一些函数。目前在导出类中提到了所有的字段。我想导出所有的函数字段,而不是提及每一个增加我的代码行的特定字段。有办法我可以做到吗? 下面是导出功能的代码示例导出导出函数中的所有函数以生成xlsx
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}
类型的字典,而不是模型实例,所以假设你不要指望,以获取相关的模型值,这应该解决您的问题:
for q in queryset.values(): # your code here
,如果你需要从相关对象的值,那么你就必须将所有所需的字段名传递给values
,使用"relatedfield__fieldname"
语法(用于与查找相同)相关对象的字段 - 也就是说,如果country
实际上是一个foreign_key到Country
模型与name
领域,你想在你的结果国名,你将需要:
fields = ["name", "place", "date", "time", "country__name", "city") for q in queryset.values(*fields):
# your code here
而且(无关,但是......),你将项目添加到您的方式列表无用地复杂(并且不是很有效)。你可以只建立自己的字典,并把它添加到列表中:
# awful name FWIW... what about 'records' or 'rows' or, # well, something meaningful ?
list_dict = []
for q in queryset:
d = dict(name=q.name, place=q.place, time=q.time, #etc)
list_dict.append(d)
这可以进一步改进成一个列表表达式:
list_dict = [ dict(name=q.name, place=q.place, time=q.time, #etc)
for q in qs
]
但由于queryset.values()
已经产生类型的字典,你真正需要的其实是:
fields = ["name", "place", "date", "time", "country", "city") list_dict = list(queryset.values(*fields))
以上是 导出导出函数中的所有函数以生成xlsx 的全部内容, 来源链接: utcz.com/qa/262850.html