You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Django-Import-Export的AccountResource导入添加DecimalWidget

解决Django-Import-Export导入Excel浮点数转Decimal的问题

这问题我之前也碰到过——Excel总是把整数导出成带.0的浮点数,导入的时候确实容易出问题,不过用DecimalWidget就能轻松搞定,直接在你的AccountResource里给DecimalTest字段指定对应的Widget就行,具体实现步骤如下:

1. 导入需要的Widget模块

首先要确保你导入了DecimalWidget:

from import_export import resources, fields
from import_export.widgets import DecimalWidget
from .models import Account  # 替换成你的模型实际导入路径

2. 修改AccountResource,指定DecimalTest字段的Widget

在资源类里显式定义DecimalTest字段,并绑定DecimalWidget:

class AccountResource(resources.ModelResource):
    # 给DecimalTest字段指定DecimalWidget,处理Excel的浮点数/整数转Decimal
    DecimalTest = fields.Field(
        attribute='DecimalTest',
        widget=DecimalWidget()
    )

    class Meta:
        model = Account
        skip_unchanged = True
        report_skipped = False
        import_id_fields = ('ID',)
        fields = ('ID', 'Rank_Test', 'UName', 'DecimalTest')

额外说明

  • DecimalWidget会自动识别Excel里的整数(如5)、浮点数(如5.0、3.14),把它们转换成Django的Decimal类型,完美适配模型里的DecimalField。
  • 如果需要自定义小数精度,可以给DecimalWidget传递decimal_places参数,比如强制保留两位小数:widget=DecimalWidget(decimal_places=2)。
  • 如果要处理空单元格场景,可以设置default参数,比如widget=DecimalWidget(default=None),避免导入空值时报错。

内容的提问来源于stack exchange,提问作者CodeHard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:03:32