django import_export export 导出时新增自定义字段

December 17, 2023
测试
测试
测试
测试
3 分钟阅读

环境

Django==2.2.x

django-import-export==2.3.0

代码

from django.contrib import admin
from .models import *
from .forms import *
from rangefilter.filter import DateRangeFilter, DateTimeRangeFilter

from import_export import resources, fields
from import_export.admin import ImportExportModelAdmin
from import_export.admin import ImportExportActionModelAdmin
from import_export.admin import ExportActionMixin
from import_export.widgets import ForeignKeyWidget

# from .utils import *

import datetime
import tablib


# Register your models here.


class InvestProjectResource(resources.ModelResource):
    """
    导出 InvestProject 部分数据
    """
    # Book.name.field.verbose_name 取模型的 verbose_name 名称
    # name = fields.Field(attribute='name', column_name=Book.name.field.verbose_name)

    fund_manager = fields.Field(
        column_name='基金经理',
        attribute='fund_manager',
        widget=ForeignKeyWidget(FundManager, 'name'))

    # 新增字段:fund_performance_3y
    fund_performance_3y = fields.Field(column_name="收益率·近3年")

    @staticmethod
    def dehydrate_fund_performance_3y(instance: InvestProject):
        # dehydrate_新字段名称,dehydrate_ 是固定的开头
        # instance:InvestProject 的单个实例
        rate_filter = FundPerformance.objects.filter(period="近3年", fund=instance)
        if rate_filter.exists():
            rate = rate_filter.first().return_rate
        else:
            rate = "-"
        return rate

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多