更新日志¶
警告
如果从v3升级,v4引入了破坏性变更。请参考 发布说明。
4.3.9 (2025-07-21)¶
允许在:ref:model_resourcefactory<using_modelresource_factory>`中指定元选项(`2078)
允许在 model_resourcefactory 中添加自定义字段和方法 (2081)
常见问题更新:描述如何自定义Excel导出 (2088)
4.3.8 (2025-06-23)¶
4.3.7 (2025-02-25)¶
更新法语翻译 (2042)
4.3.6 (2025-02-21)¶
4.3.5 (2025-02-01)¶
4.3.4 (2025-01-15)¶
处理在导出时使用``values()``调用的QuerySets(2011)
4.3.3 (2024-12-02)¶
更新所有翻译 (2014)
4.3.2 (2024-12-01)¶
4.3.1 (2024-11-19)¶
修复openpyxl的导入问题(2005)
4.3.0 (2024-11-19)¶
4.2.1 (2024-11-11)¶
4.2.0 (2024-10-23)¶
此版本包含重大变更。请参阅 发布说明。
升级了tablib版本(1627)
文档覆盖格式 (1868)
ModelAdmin导出mixin中一致的queryset创建 (1890)
已弃用
get_valid_export_item_pks(),改用get_queryset()(1890)改进
ExportViewFormMixin的弃用警告,以在类定义时报告 (1900)修复具有自定义声明名称的字段的导出 (1903)
隐藏“Resource”表单当它只有一个选项时(1908)
更新日期、时间和datetime小部件的渲染方法以处理派生实例(1918)
添加对Django 5.1的支持 (1926)
在数字小部件(
FloatWidget()、IntegerWidget()、DecimalWidget())中接受使用当前语言数字分隔符的数字(1927)为从字段白名单中排除的已声明字段添加了警告 (1930)
修复v3回归问题:处理导出到电子表格时的原生类型 (1939)
修复未分配导出权限时变更界面显示的导出按钮 (1942)
修复 Django 5.1 中跳过行时导致的崩溃 (1944)
允许在dehydrate方法中使用可调用对象(1950)
修复当Resource字段声明不正确时导致的崩溃 (1963)
更新依赖项 (1979)
4.1.1 (2024-07-08)¶
恢复已弃用方法
get_fields()的返回值 (1897)
4.1.0 (2024-06-25)¶
4.0.10 (2024-06-25)¶
移除自定义存储的django版本检查 (1889)
4.0.9 (2024-06-18)¶
docs: 澄清
for_delete()文档 (1877)修复默认的
Field返回空字符串而不是 'None' 的问题(1872)恢复为
attribute设置默认值 (1875)
4.0.8 (2024-06-13)¶
4.0.7 (2024-05-30)¶
4.0.6 (2024-05-27)¶
4.0.5 (2024-05-23)¶
修复因格式错误的README.rst导致的无效构建(1851)
4.0.4 (2024-05-23)¶
4.0.3 (2024-05-16)¶
4.0.2 (2024-05-13)¶
4.0.1 (2024-05-08)¶
4.0.0 (2024-04-27)¶
弃用¶
增强功能¶
重构排序逻辑 (1626)
重构 'diff' 逻辑以避免调用 dehydrate 方法
重构
fields、import_order和export_order的声明以解决排序问题
重构以导出HTML / 公式转义更新 (1638)
移除了未使用的变量
Result.new_record(1640)重构
resources.py以标准化方法参数 (1641)添加了对缺失
import_id_fields的特定检查 (1645)启用可选的 tablib 依赖项 (1647)
添加了
get_lookup_kwargs()以便更轻松地覆盖对象查找 (1651)修复在ModelResource中声明现有模型字段导致导出顺序改变的问题 (1663)
新增
do_instance_save()辅助方法 (1668)允许将Resource模型定义为字符串(1669)
支持多资源导出 (1671)
支持从模型变更表单导出 (1687)
如果只定义了一种格式,导入表单默认为只读字段(1690)
更新了Admin UI以跟踪已删除和跳过的导入(1691)
新增可定制的``MediaStorage`` (1708)
添加了Admin UI导入错误消息的自定义功能 (1727)
改进错误消息的输出 (1729)
新增功能:管理员导出视图的可选字段 (1734)
添加了对声明的
import_id_fields不在数据集中的特定检查 (1735)在
add_instance_info()中添加了 try / catch 以处理不可序列化的实例 (1767)如果源文件包含无效头则添加表单错误(1780)
移除不必要的format方法重写(1785)
支持基于请求属性的Resource类动态选择(1787)
修复¶
动态小部件参数修复了 CharField 在 xlsx 中的 'NOT NULL constraint' 错误 (1485)
修复与 adminsortable2 的合作 (1633)
移除了未使用的方法
utils.original()修复已弃用的
log_action方法 (1673)修复多重继承未设置选项 (1696)
修复问题:在``fields``中未定义的已声明Resource字段仍被导入(1702)
修复了Admin导入过程中对:attr:~import_export.exceptions.FieldError`的处理(`1755)
修复了Admin导出期间对django
FieldError的处理 (1756)修复:YAML 导出不适用于 SafeString (1762)
修复:
render()在值为None时崩溃 (1771)修复未将表单传递给
get_import_resource_kwargs()的问题 (1789)修复:
PositiveBigIntegerField缺少默认小部件(1795)
开发¶
重构构建过程 (1630)
重构了
test_admin_integration():拆分为更小的测试模块 (1662)重构了
test_resources():拆分为更小的测试模块 (1672)在``runtests.sh``中更新了``docker-compose``命令以使用最新版本语法(1686)
重构
resources为独立的declarative和options模块 (1695)重构测试以移除测试间的依赖关系(1703)
处理python3.12 datetime弃用(1705)
将
test_resources.py重构为更小的模块 (1733)更新测试覆盖率以在``collect_failed_rows``为``True``时包含错误行(1753)
移除了对django 3.2的支持(1790)
为模型字段生成的小部件添加了测试 1795)
文档¶
性能¶
修复外键ID导致的导出缓慢问题 (1717)
国际化 (i18n)¶
为release-4更新的翻译(1775)
3.3.9 (2024-04-28)¶
更新俄语翻译 (1797)
3.3.8 (2024-04-08)¶
添加额外的django模板块以扩展导入页面 (1776)
3.3.7 (2024-02-03)¶
将
get_export_resource_kwargs()传递给 Resource 构造函数export_action()(1739)修复传递给Resource构造函数的模型类在导出时崩溃的问题(1745)
修复 skip_row 文档字符串的缩进 (1743)
默认从
get_resource_kwargs()返回kwargs(1748)
3.3.6 (2024-01-10)¶
修复在使用'light'配色方案时的高亮问题 (1728)
3.3.5 (2023-12-19)¶
3.3.4 (2023-12-09)¶
3.3.3 (2023-11-11)¶
export_admin_action()可以通过在ModelAdmin中继承它来覆盖 (1681)
3.3.2 (2023-11-09)¶
3.3.1 (2023-09-14)¶
添加了 .readthedocs.yaml (1625)
3.3.0 (2023-09-14)¶
弃用¶
移除 'escape output' 弃用 (1618)
移除已弃用的 IMPORT_EXPORT_ESCAPE_OUTPUT_ON_EXPORT。
弃用 IMPORT_EXPORT_ESCAPE_HTML_ON_EXPORT。请参阅 installation 文档。
增强功能¶
国际化¶
修复¶
开发¶
文档¶
更新了与第三方库互操作的文档 (1614)
3.2.0 (2023-04-12)¶
导出到XLSX时转义公式 (1568)
这包括弃用 IMPORT_EXPORT_ESCAPE_OUTPUT_ON_EXPORT。
参考 installation 获取替代方案。
import_export.formats.TablibFormat.export():escape_output标志现已弃用,推荐使用escape_html和escape_formulae。
重构方法,以便正确声明
args(1566)这包括如果您已覆盖
export()或ImportExportFormBase需要注意的弃用项。export():如果传递queryset作为第一个参数,请确保将其作为命名参数传递。ImportExportFormBase:如果将``resources``作为第一个参数传递给``__init__``,请确保以命名参数的形式传递。
更新了
setup.py(1564)添加了
SECURITY.md(1563)更新FAQ以包含针对`RelatedObjectDoesNotExist`异常的解决方法(1562)
防止比较新对象的m2m字段时出错 (1560)
为从admin表单传递数据到Resource添加文档 (1555)
新增了对西班牙语和西班牙语(阿根廷)的翻译(1552)
将kwargs传递给import_set函数 (1448)
3.1.0 (2023-02-21)¶
Float 和 Decimal 小部件在导出时使用 LANGUAGE_CODE (1501)
添加可选的 dehydrate 方法参数 (1536)
exceptions模块已被取消弃用
更新了德文翻译 (1537)
在Admin Site中添加单步导入选项 (1540)
添加对m2m add的支持 (1545)
批量操作时收集错误 (1541)
此更改导致批量导入错误被记录在DEBUG级别而非EXCEPTION。
提升批量导入性能 (1539)
raise_errors已被弃用作为import_row()中的 kwarg
在导入过程中减少内存占用 (1542)
文档更新 (1533)
为``DateWidget``和``TimeWidget``添加详细的格式参数文档字符串(1532)
tox更新(1534)
修复HTML导出中的XSS漏洞 (1546)
3.0.2 (2022-12-13)¶
3.0.1 (2022-10-18)¶
3.0.0 (2022-10-18)¶
重大变更¶
此版本对公共API进行了一些小改动。如果您重写了``resources``或``widgets``模块中的任何方法,可能需要更新您的实现以适应这些更改。
- 检查
ManyToManyField在skip_row()中的值 (1271) 这修复了一个问题,即ManyToMany字段在``skip_row()``中没有被正确检查。这意味着``skip_row()``现在将``row``作为必需参数。如果您在自己的实现中重写了``skip_row()``,则需要添加``row``作为参数。
- 检查
- Bug修复:当设置
skip_unchanged时验证错误被忽略(1378) 如果你重写了
skip_row(),你可以选择在存在验证错误时是否跳过行。默认行为是在导入过程中出现验证错误时不跳过行。
- Bug修复:当设置
- 使用'create'标志而不是instance.pk (1362)
import_export.resources.save_instance()现在需要一个额外的必填参数:is_create。如果您在自己的代码中重写了save_instance(),则需要添加这个新参数。
widgets:未使用的*args参数已从方法定义中移除。(1413)如果你已经覆盖了``clean()``,那么你应该更新你的方法定义以反映这一变化。
widgets.ForeignKeyWidget/widgets.ManyToManyWidget:未使用的*args参数已从__init__()中移除。如果您已重写ForeignKeyWidget或ManyToManyWidget,可能需要更新您的实现以反映此更改。
- 管理界面:修改了导入错误的处理方式 (1306)
导入过程中引发的异常现在以表单错误的形式呈现,而不是被包裹在响应的<H1>标签中。如果您有任何直接使用写入响应的错误的自定义逻辑,则可能需要更改。
- ImportForm:提高与之前签名的兼容性(1434)
之前的
ImportForm实现是基于 Django 的forms.Form,如果你有任何自定义的 ImportForm,现在需要继承自import_export.forms.ImportExportFormBase。
- 允许在admin视图中使用mixins自定义``change_list_template``(1483)
如果你正在使用此库中的admin mixins与覆盖``change_list_template``的代码(通常是来自其他库的admin mixins,如django-admin-sortable2或reversion)结合使用,admin更改列表视图中的对象工具现在可能会以不同方式呈现。
如果你创建了一个自定义模板,该模板扩展了任何 import_export 模板,那么现在可能会导致递归错误(参见 `1415 <https://github.com/django-import-export/django-import-export/pull/1415 >`_)
import.html:添加了导入模板的块(1488)如果您对导入模板进行了自定义,那么在添加块声明后,您可能需要重构这些内容。
弃用¶
此版本添加了一些将在未来版本中移除的弃用项。
在ModelAdmin中添加对多资源的支持。(1223)
接受单一资源的``*Mixin.resource_class``已被弃用,新增了接受可下标类型(list、tuple等)的``*Mixin.resource_classes``。
同样适用于所有
get_resource_class、get_import_resource_class和get_export_resource_class方法。
已弃用的
exceptions.py(1372)重构了
ImportMixin/ExportMixin中与表单相关的方法 (1147)以下已弃用:
get_import_form()get_confirm_import_form()get_form_kwargs()get_export_form()
增强功能¶
为导出操作正确设置了默认格式选择 (1389)
添加了在每个行的``RowResult``中存储原始行值的选项(1393)
为``ForeignKeyWidget``添加自然键支持(1371)
优化后的
CharWidget默认实例化 (1414)允许在admin视图中使用mixins自定义``change_list_template``(1483)
添加了导入模板的块 (1488)
提升与之前 ImportForm 签名的兼容性 (1434)
重构了
ImportMixin/ExportMixin中与表单相关的方法 (1147)在模板中包含自定义表单媒体 (1038)
移除本地运行tox时生成的不必要文件 (1426)
修复¶
开发¶
增加了测试覆盖率,重构了CI构建以使用tox (1372)
文档¶
澄清了关于临时存储使用的问题 (1306)
2.9.0 (2022-09-14)¶
2.8.0 (2022-03-31)¶
2.7.1 (2021-12-23)¶
2.7.0 (2021-12-07)¶
2.6.1 (2021-09-30)¶
还原 'dark mode' css:在 django2.2 中引发问题 (1330)
2.6.0 (2021-09-15)¶
添加了对空 'options' 的防护以修复崩溃 (1325)
更新了import.css以支持暗黑模式 (1323)
修复了覆盖的mixin方法未被调用的回归问题 (1315)
修复xls/xlsx中Time字段的导入 (1314)
添加了对 'to_encoding' 属性的支持 (1311)
移除了 travis 并替换为 github actions 用于 CI (1307)
提高测试覆盖率 (1286)
修复年份 < 1000 的日期格式小问题 (1285)
翻译zh_Hans缺失部分(1279)
从mixins.py和admin.py中移除重复代码 (1277)
修复 BooleanWidget 文档中的示例 (1276)
对Django main的更好支持 (1272)
不要用python36,37测试Django主分支(1269)
支持 Django 3.2 (1265)
修正Readme中的拼写错误(1258)
重写文档字符串中的逻辑子句 (1255)
支持多个数据库 (1254)
将django master更新为django main(1251)
在 locale 中添加波斯语翻译的消息 (1249)
更新俄语翻译 (1244)
使用ModelAdmin.get_actions追加导出管理操作 (1241)
修复makemigrations命令中的小错误(1233)
从CI中移除EOL Python 3.5 (1228)
当缺少import_id时,CachedInstanceLoader默认为空(1225)
将 kwargs 添加到 import_row、import_object 和 import_field (1190)
使用data_only标志调用load_workbook()(1095)
2.5.0 (2020-12-30)¶
2.4.0 (2020-10-05)¶
修复弃用的 Django 3.1
Signal(providing_args=...)用法。修复弃用的 Django 3.1
django.conf.urls.url()用法。
2.3.0 (2020-07-12)¶
2.2.0 (2020-06-01)¶
2.1.0 (2020-05-02)¶
2.0.2 (2020-02-16)¶
2.0.1 (2020-01-15)¶
2.0 (2019-12-03)¶
移除了对 Django < 2.0 的支持
移除了对 Python < 3.5 的支持
feat: 支持 Postgres JSONb 字段 (904)
1.2.0 (2019-01-10)¶
1.1.0 (2018-10-02)¶
1.0.1 (2018-05-17)¶
将字段从类属性深拷贝到实例属性 (550)
修复 #612: NumberWidget.is_empty() 应去除字符串类型的值的空格 (613)
修复 #713:结果 qs 中未包含最后一天 (779)
在开发中使用Python3兼容的MySql驱动(706)
修复:在 Python 3 中警告 U 模式已被弃用 (776)
重构:更轻松地覆盖widgets和默认字段(769)
关于声明字段的更新文档 (735)
自定义js用于action form也处理grappelli (719)
在面包屑中使用 'verbose_name' 以匹配 Django 默认 (732)
添加 Resource.get_diff_class() (745)
修复并添加波兰语翻译 (747)
将 raise_errors 恢复为 before_import (749)
1.0.0 (2018-02-13)¶
0.7.0 (2018-01-17)¶
0.6.1 (2017-12-04)¶
0.6.0 (2017-11-23)¶
重构import_row调用,使用关键字参数(585)
在admin/base_site.html的block bodyclass中添加了{{ block.super }}调用(582)
为Django的DurationField添加对DurationWidget的支持 (575)
GitHub bmihelac -> django-import-export 账户更新 (574)
向文档添加 intersphinx 链接 (572)
添加 Resource.get_import_fields() (569)
修复了readme中的错误 (568)
Bugfix/修复 m2m 小部件清理 (515)
允许为通过import_action()和export_action()渲染的模板注入上下文数据 (544)
Bugfix/修复 generate_log_entries() 中的异常 (543)
处理导入数据集并在单独的方法中产生结果(542)
Bugfix/修复将异常转换为字符串时的错误 (526)
修复管理员集成测试以适配新的“导入完成...”消息,将捷克语翻译更新至100%覆盖率。(596)
使导入表单类型更易于覆盖 (604)
为Field添加saves_null_values属性以控制是否在对象上保存空值(611)
添加保加利亚语翻译 (656)
将django 1.11添加到TravisCI (621)
确保Signals代码示例在文档中正确格式化(553)
将Django添加为setup.py的依赖项 (634)
更新对django 2.x的反向导入 (620)
将Django版本分类器添加到setup.py的CLASSIFIERS中(616)
Django 2.0的一些修复 (672)
在查找ManyToMany字段时去除空格(668)
修复Python 3.x测试中的所有ResourceWarnings(637)
从README中移除下载计数徽章,因为shields.io不再支持PyPi的该功能(677)
添加coveralls支持和README徽章 (678)
0.5.1 (2016-09-29)¶
0.5.0 (2016-09-01)¶
在导入新实例时隐藏差异中的默认值 (458)
通过函数调用向Result对象追加行以允许覆盖 (462)
添加 get_resource_kwargs 以允许将请求传递给资源 (457)
将Django用户暴露给get_export_data()和export() (447)
添加 before_export 和 after_export 钩子 (449)
触发事件 post_import, post_export 事件 (440)
添加 **kwargs 到 export_data / create_dataset
添加 before_import_row() 和 after_import_row() (452)
将get_export_fields()添加到Resource以控制导出的字段 (461)
控制用户可见字段 (466)
修复使用ManyRelatedManager的模型的差异
处理已清理的对象 (484)
添加 after_import_instance 钩子 (489)
使用优化的xlsx阅读器(482)
在admin文档中重新添加BookResource的resource_class(481)
为 process_import() 要求 POST 方法 (478)
添加SimpleArrayWidget以支持使用django.contrib.postgres.fields.ArrayField (472)
添加新的Diff类(477)
修复 #375:在 widget.clean() 中添加行,在 widget.render() 中添加 obj (479)
恢复数据导入的事务处理 (480)
重构导入-导出模板 (496)
将文档链接更新至稳定版本,将rtfd更新为.io(507)
修复了捷克语翻译中的拼写错误 (495)
0.4.5 (2016-04-06)¶
0.4.4 (2016-03-22)¶
修复:通过pip安装时缺少static/目录(427)
在导入成功消息中添加总导入数和总更新数
0.4.3 (2016-03-08)¶
0.4.2 (2015-12-18)¶
添加 xlsx 导入支持
0.4.1 (2015-12-11)¶
修复具有动态默认可调用项的字段 (360)
0.4.0 (2015-12-02)¶
添加Django 1.9支持
Django 1.4 不受支持 (348)
0.3.1 (2015-11-20)¶
修复:在python 3中导入csv
0.3 (2015-11-20)¶
修复:导入csv时出现的UnicodeEncodeError,该问题在0.2.9版本中引入(347)
0.2.9 (2015-11-12)¶
0.2.8 (2015-07-29)¶
0.2.7 (2015-05-04)¶
0.2.6 (2014-10-09)¶
0.2.5 (2014-10-04)¶
0.2.4 (2014-09-18)¶
fix: get_value 在模型方法调用时引发属性错误
修复了 Python 3 上的 XLS 导入问题。优化了循环
修复了在从管理界面导入数据时正确跳过标记为跳过的行的问题。
允许Resource.export接受可迭代对象以及querysets
改善错误消息
修复:正确处理NullBoleanField(115)- 不向后兼容的更改 之前None值被当作false处理
0.2.3 (2014-07-01)¶
将separator和field关键字参数添加到ManyToManyWidget
修复:不支持1900年之前的日期 (93)
0.2.2 (2014-04-18)¶
RowResult 现在存储的是异常对象而非其 repr
管理员集成 - 为每个新增/更新/删除的实例添加EntryLog对象
0.2.1 (2014-02-20)¶
FIX import_file_name 表单字段可用于访问文件系统 (65)
0.2.0 (2014-01-30)¶
Python 3 支持
0.1.6 (2014-01-21)¶
用于自定义工作流的额外钩子 (61)
0.1.5 (2013-11-29)¶
0.1.4¶
0.1.3¶
修复包装
DB事务支持导入数据
0.1.2¶
在导入期间支持删除对象
错误修复
允许字段通过自定义方法“脱水”
添加了文档
0.1.1¶
在admin集成中添加了ExportForm以选择导出文件格式
重构admin集成以允许更好地处理特定格式支持的功能和更好地处理读取文本文件
在Admin集成中包含所有可用格式
bug修复
0.1.0¶
重构api