跳转到主要内容

Django基于类的CSV导出视图

项目描述

django-csv-export-view

Django的基于类的CSV导出视图。

Build Status

功能

  • 通过设置Django的modelfieldsexclude可迭代对象轻松进行CSV导出。
  • 与现有的基于类的视图混入一起工作以进行访问控制
  • 默认生成对Microsoft Excel友好的CSV
  • 为CSV设置了适当的HTTP头
  • 根据需要轻松覆盖默认值
  • 轻松集成到Django Admin中

安装

pip install django-csv-export-view

快速入门

示例

from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel
    fields = ("field", "related", "property")

    # When using related fields you will likely want to override get_queryset() use select_related() or prefetch_related().
    def get_queryset(self):
        return super().get_queryset().select_related("related")
        OR
        return super().get_queryset().prefetch_related("related")
from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel
    fields = ("field", "related__field", "property")
from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel
    fields = "__all__"
from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel
    exclude = ("id",)

    def get_queryset(self):
        queryset = super().get_queryset()
        return queryset.exclude(deleted=True)
from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel

    def get_fields(self, queryset):
        fields = ["username", "email"]
        if self.request.user.is_superuser:
            fields.append("birth_date")
        return fields

fields / exclude:字段名和属性的迭代对象。您不能同时设置fieldsexclude。当使用"__all__"时,也可以设置fields以导出所有字段。当使用"__all__"时,不包括模型属性。可以使用__使用相关字段。如果默认逻辑不支持自定义行为,则覆盖get_fields(self, queryset)

model:用于CSV导出查询集的模型。如果需要自定义查询集,则覆盖get_queryset()

进一步定制

示例

from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel
    fields = "__all__"
    header = False
    specify_separator = False
    filename = "data-export.csv"
from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel
    fields = "__all__"
    verbose_names = False
from django.utils import timezone
from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel
    fields = "__all__"

    def get_filename(self, queryset):
        return "data-export-{!s}.csv".format(timezone.now())

header - 布尔值 - 默认:True
是否在CSV中包含标题。

filename - 字符串 - 默认值:从 queryset.modelverbose_name_plural 生成的划线版本。
如果需要动态文件名,则重写 get_filename(self, queryset)

specify_separator - 布尔值 - 默认值:True
是否在CSV文件的第一行包含 sep=<sepaator>。这对于生成兼容Microsoft Excel的CSV文件非常有用。

verbose_names - 布尔值 - 默认值:True
是否在CSV文件标题中使用首字母大写的verbose列名。如果为False,则使用字段名。

CSV写入器选项

示例

from csv_export.views import CSVExportView
from .models import MyModel

class DataExportView(CSVExportView):
    model = MyModel
    fields = "__all__"

    def get_csv_writer_fmtparams(self):
        fmtparams = super().get_csv_writer_fmtparams()
        fmtparams["delimiter"] = "|"
        return fmtparams

重写 get_csv_writer_fmtparams(self) 并返回一个csv写入格式参数的字典。默认格式参数为:dialect="excel" 和 quoting=csv.QUOTE_ALL。请参阅Python文档中所有可用选项

https://docs.pythonlang.cn/3.9/library/csv.html#csv.writer

Django管理后台集成

示例

from django.contrib import admin
from csv_export.views import CSVExportView
from .models import MyModel

@admin.register(MyModel)
class DataAdmin(admin.ModelAdmin):
    actions = ("export_data_csv",)

    def export_data_csv(self, request, queryset):
        view = CSVExportView(queryset=queryset, fields="__all__")
        return view.get(request)

    export_data_csv.short_description = "Export CSV for selected Data records"

贡献

接受合并请求。

替代方案

https://github.com/django-import-export/django-import-export/

https://github.com/mjumbewu/django-rest-framework-csv

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django-csv-export-view-2.0.0.tar.gz (10.0 kB 查看哈希值)

上传时间 源代码

构建分布

django_csv_export_view-2.0.0-py3-none-any.whl (9.6 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面