我想修改或扩展 Odoo 中 csv 导入的流程。
我有一些自动计算的字段和其他需要的字段,但不在 csv 文件中。
搜索代码并尝试使用 ir.action.todo 和 ir.action.client 但不起作用。
有什么想法,使用钩子或其他工作吗?
谢谢
约尼尔。
你只需要继承'base_import.import'模型即可
class Import(models.TransientModel):
_inherit = 'base_import.import'
@api.model
def _convert_import_data(self, fields, options):
# Override base method
# Called when actual import start
data, import_fields = super(Import, self)._convert_import_data(fields, options)
# Do something ...
return data, import_fields
def parse_preview(self, options, count=10):
# Override base method
# Called when data loaded
preview_data = super(Import, self).parse_preview(options, count=count)
# Do something ...
return preview_data
但是,覆盖基本导入方法可能不是一个好主意,我建议使用自定义导入向导来进行自定义导入。
在我的例子中,我的前开发人员是在 odoo15 base_import 中编辑的采样器。现在我想将其创建到 odoo17 中的额外插件中。 检查我的代码,search_count 甚至是第一次执行(我的意思是导入后计数,我想在导入之前检查一下。
这是我的代码
class CheckImport(models.TransientModel):
_inherit = 'base_import.import'
@api.model
def _convert_import_data(self, fields, options):
try:
data, import_fields = super(CheckImport, self)._convert_import_data(fields, options)
file_name = self.file_name
same_file = self.env['base_import.import'].search_count([
('file_name', '=', file_name), ('res_model', '=', self.res_model), ('file_type', '=', self.file_type)])
if same_file > 0:
raise ImportValidationError(_("This File Name is already imported."))
return data, import_fields
except ImportValidationError as e:
raise e