环境

Python 3.7.7
Django 2.2.16
django-import-export 2.4.0

示例模型

模型 model.py

class Task(models.Model):
    name = models.CharField(verbose_name='任务名称', unique=True, max_length=255)
    statuss = (
        (0, '创建中'),
        (1, '已创建'),
        (2, '进行中'),
        (3, '已结束'),
        (4, '作废中'),
        (5, '已作废'),
    )
    status = models.IntegerField(verbose_name='任务状态', choices=statuss, default=0)

管理 admin.py

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    resource_class = TaskResource

导出字段变更显示名称

admin.py

from django.contrib import admin
from import_export import resources
from import_export.fields import Field


from .models import *


class TaskResource(resources.ModelResource):
    name = Field(attribute='name', column_name='任务名称')

    class Meta:
        model = Task
        fields = ['name']

导出 choices 类型字段的显示值

admin.py

from django.contrib import admin
from import_export import resources
from import_export.fields import Field


from .models import *


class TaskResource(resources.ModelResource):
    name = Field(attribute='name', column_name='任务名称')
    status = Field(attribute='get_status_display', column_name='任务状态')

    class Meta:
        model = Task
        fields = ['name', 'status']
        #fields = ['name'] # 可省略 status

导出使用自定义函数的字段

admin.py

from django.contrib import admin
from import_export import resources
from import_export.fields import Field


from .models import *


class TaskResource(resources.ModelResource):
    name = Field(attribute='name', column_name='任务名称')
    status = Field(attribute='get_status_display', column_name='任务状态')
    my_sn = Field(column_name='自定义序列号')

    class Meta:
        model = Task
        fields = ['my_sn', 'name', 'status']
        #fields = ['my_sn'] # 可省略 name 与 status

    def dehydrate_my_sn(self, task):
        return "自定义 SN:" + str(task.id) 

fields 与 Field 字段说明

Field:控制需要导出的字段。attribute 起覆盖原字段作用,若省略,则表示自定义不存在的字段。
fields:控制除 Field 外,还需要导出的字段。如果省略:则导出所有未被 Field 所使用的字段。

参考

stackoverflow.com/questions/39674976/django-import-export-choices-field
django-import-export.readthedocs.io/en/latest/getting_started.html#advanced-data-manipulation-on-export

最后修改:2020 年 12 月 08 日 04 : 31 PM
如果觉得文章帮助了您,您可以随意赞赏。