3

我正在尝试使用django-import-export将数据加载到我的 Django 站点管理界面中。

在输入过程中,我想做一些复杂的数据验证,包括创建和/或修改与使用 django-import-export 上传到的模型相关的其他模型。

看起来before_save_instance钩子是我想要执行这个复杂验证的导入工作流程中的时间。

before_save_instance的输入参数仅包括正在更新的模型的对象,它不包含正在导入的行中的所有数据。

特别是,我看不到在任何地方导入的行中的只读字段(我的验证逻辑需要它们)。

如何访问从内部导入的整行before_save_instance

4

1 回答 1

4

事实证明,您可以通过以下方式获取相关对象上的字段列表:

self.get_fields()

field可以通过以下方式访问instance传入的值before_save_instance

field_value = None try: field_value = field.get_value(instance).all() except AttributeError: field_value = field.get_value(instance)

您还可以重写该before_insert_rows(self, rows, **kwargs)方法以访问原始行信息。

于 2017-02-19T04:25:03.643 回答