一直在更新 Python/Django 项目,但我对此几乎一无所知。
目前我一直在尝试将当前视图(更改列表)导出到 CSV。列打印得很好,所有方法(函数)都按照它们应该/预期的方式显示所有信息。
当点击“导出”链接时,硬核开始,并且已经持续了数周。
最后一些东西开始显示在我的 .csv 文件中,但我仍然无法打印出循环中how_many
或postal_code
循环内的方法for elem in csv_elements:
下面是一个部分打印的类,它负责在屏幕上显示列,然后将它们导出到.csv
文件中。我没有包括所有的,只是我个人认为重要的部分展示(当然我可能是非常错误的)。基本上一切export_this_list
正常。
我应该使用什么语法才能在最后一个函数(方法)中重用已定义的函数(方法)?
class EnrolmentAdmin(TrainingAdminMixin, admin.ModelAdmin):
"""EnrolmentAdmin is used for registering Enrolment model."""
form = EnrolmentForm
.
.
list_display = ('date', 'training', 'postal_code', 'how_many')
.
.
def postal_code(self, obj):
return obj.invoice_data['postal_code']
def how_many(self, obj):
return obj.total_participants
how_many.short_description = "How Many Persons"
.
.
def export_this_list(self, request):
"""Generates participants list in Excel sheet."""
filename = 'Orders.csv'
csv_elements = Enrolment.objects.all()
if not csv_elements:
response = HttpResponseRedirect(
reverse('admin:xxxxxx_training_change', args=[object_id]))
msg = _('There are no orders yet.')
messages.error(request, msg)
else:
response = HttpResponse(content_type='text/csv')
response[
'Content-Disposition'] = 'attachment; filename="{}"'.format(
filename)
#fieldnames = ['Date', 'Training', 'Postal code', 'How many']
fieldnames = ['How many']
sheet = csv.DictWriter(
response, fieldnames=fieldnames, delimiter=';')
sheet.writeheader()
for elem in csv_elements:
sheet.writerow({
'How many': self.how_many
})
return response
你应该像这样调用函数:self.how_many(obj)
在您的情况下,它将是:
for elem in csv_elements:
sheet.writerow({
'How many': self.how_many(elem)
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句