导出导出函数中的所有函数以生成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

回到顶部