gpt4 book ai didi

python - Django csv 导出

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:41 24 4
gpt4 key购买 nike

我有以下 csv 导出功能,可以将模型信息导出到 csv 文件中。但我试图弄清楚如何显示模型中函数的输出。因此,csv 导出函数显示模型中的所有字段(表中的字段),但不显示模型中函数的输出。

所以如果我有以下内容:

def avg_tag(self, obj):
bids = Bid.objects.active(user=obj.user.id)
return bids.aggregate(average_price=Avg('list_price'))['average_price']

在模型中

它没有从该函数获取输出。

以下是 csv 导出功能操作:

def export_select_fields_csv_action(description="Export selected objects",
fields=None, exclude=None, header=True):
def export_as_csv(modeladmin, request, queryset):
"""
Generic csv export admin action.
based on http://djangosnippets.org/snippets/1697/
"""
opts = modeladmin.model._meta
field_names = [field.name for field in opts.fields]
labels = []
if exclude:
field_names = [v for v in field_names if v not in exclude]
elif fields:
field_names = [k for k, v in fields if k in field_names]
labels = [v for k, v in fields if k in field_names]

response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = ('attachment; filename=%s.csv'
% unicode(opts).replace('.', '_'))

writer = csv.writer(response)
if header:
if labels:
writer.writerow(labels)
else:
writer.writerow(field_names)
for obj in queryset:
writer.writerow([unicode(getattr(obj, field)).encode('utf-8')
for field in field_names])
return response
export_as_csv.short_description = description
return export_as_csv

如何更改上面的函数,以便将模型中函数的输出输出到 csv 中?谢谢!

最佳答案

我想编辑循环查询集的部分并将其添加到末尾 -

for obj in queryset:
writer.writerow([unicode(getattr(obj, field)).encode('utf-8')
for field in field_names] + "," + obj.avg_tag())

您可以执行类似的操作来添加所需的标题 -

if header:
if labels:
writer.writerow(labels + "," + "Average Tag")
else:
writer.writerow(field_names + "," + "Average Tag"))

更新

获取字段和方法会有点困难,因为您会发现模型上有很多您没有定义的方法(并且您可能不希望在 csv 中出现)。没有简单的方法可以区分您想要什么和不需要什么。

玩一下以下内容,看看里面有什么 -

import inspect
obj = modeladmin.model()
methods = [a for a in dir(modeladmin.model) if inspect.ismethod(getattr(obj, a))]
for method in methods:
print str(method)

我当然看不到执行此操作的优雅方法(或者事实上无论如何) - 我认为您必须实际指定每个方法。

关于python - Django csv 导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15031435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com