gpt4 book ai didi

python - Django 管理员将数据下载为 csv

转载 作者:行者123 更新时间:2023-12-05 00:58:00 26 4
gpt4 key购买 nike

我想从 django admin 下载数据作为 .csv 文件。我跟着教程https://www.endpoint.com/blog/2012/02/22/dowloading-csv-file-with-from-django .

我没有看到下载 csv 选项。我该如何解决我的问题?

enter image description here

我正在使用 Python3,已创建迁移。

这是我的代码

models.py

from django.db import models
from django.contrib import admin


class Stat(models.Model):
code = models.CharField(max_length=100)
country = models.CharField(max_length=100)
ip = models.CharField(max_length=100)
url = models.CharField(max_length=100)
count = models.IntegerField()


class StatAdmin(admin.ModelAdmin):
list_display = ('code', 'country', 'ip', 'url', 'count')
def download_csv(self, request, queryset):
import csv
f = open('some.csv', 'wb')
writer = csv.writer(f)
writer.writerow(["code", "country", "ip", "url", "count"])
for s in queryset:
writer.writerow([s.code, s.country, s.ip, s.url, s.count])

admin.site.register(Stat, StatAdmin)

最佳答案

如果你想在本地保存文件,@Ben 的解决方案是有效的,而且有一个小错误<如果我们要在那里写一些字符串,我们应该将文件打开为 'w',而不是 'wb'。

这个解决方案对我有用(你可以在你的 model.Admin 子类,管理类中直接过去):

def export_as_csv(self, request, queryset):

meta = self.model._meta
field_names = [field.name for field in meta.fields]

response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename={}.csv'.format(meta)
writer = csv.writer(response)

writer.writerow(field_names)
for obj in queryset:
row = writer.writerow([getattr(obj, field) for field in field_names])

return response

export_as_csv.short_description = "Export Selected"

然后在model.Admin中:

actions = ("export_as_csv",)

Click here to see the source.

此外,还有一些库可以一键保存文件:django-import-export例如。

关于python - Django 管理员将数据下载为 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921265/

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