Django 导入导出,更新记录

Django Import Export, update record

我注意到,每当我导入同一组 CSV 时,即使我 skip_unchanged=True,我的记录也会重复。理想情况下,我想要的是,如果再次导入 CSV,它不应导入相同的记录并防止重复,但如果有更改,它应该更新。

我的资源文件中有这个配置

bill_date = fields.Field(
    attribute="bill_date", column_name="date", widget=widgets.DateWidget()
)

然后 import_id_fields = ("account_number",)

我也尝试从 skip_row 方法打印原始和实例,但我在日志中得到了这个,

print(f"{getattr(original, "bill_date")} - {getattr(instance, "bill_date")}")

RESULT: None - 2021-06-07

更新

解决了我的问题,我在其中一项测试中错误地添加了 get_instance = False

这应该可以正常工作。您需要做的是确保 account_number 包含在 csv 提要中,并且它可以唯一标识您要导入的 table 中的记录。

然后,当导入发生时,逻辑会尝试使用 account_number 加载现有记录,如果存在则更新该行,否则会创建一个新行。

如果此方法不起作用,则已记录 here, and you can debug the get_or_init_instance() 方法。

如果 skip_unchanged 为真,那么逻辑将比较在您的 fields 列表中声明的每个字段,如果存储的数据和导入的数据之间没有变化,则不会更新。