我正在尝试将帐户(在模块中)创建为默认实体,因此它是可部署的实体。
为此,我在模型load
上使用了account.account
方法。为此,我检查了数据库中正确的帐户类型并填写了其ID(13
)。
env['account.account'].with_context(
import_file=True,
tracking_disable=True
).load(
['id', 'code', 'name', 'user_type_id', 'reconcile'],
['my.revenue.account.19, '8411', 'Custom Revenue', 13, '0']
)
但是,出现以下错误:
LINE 10: ... SELECT id FROM temp_irt_current WHERE name = 13 order...
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
字段user_type_id
确实需要一个ID。我尝试首先获取account.account.type
对象,将其作为值传递,还获取对象并传递其id
字段。
这是某种odoo错误,还是我使用的方法错误?为什么生成的SQL查询甚至将属性name
与传递的id
进行比较?
编辑:如果我将id
作为字符串传递,则根本无法识别传递的值。然后导致以下错误:
ERROR: null value in column "user_type_id" violates not-null constraint
EDIT2:如果我使用模型的create方法来首先创建account.account
实体,然后再创建ir.model.data
实体,则它可以正常工作。但是像这样,我需要进行额外的检查以验证实体是否存在,并且更新实体要麻烦得多。
创建帐户的代码:
account_id = env['account.account'].create({
'name': 'Custom Revenue',
'code': 8411,
'user_type_id': 13,
'reconcile': False
})
和xmlid创建:
env['ir.model.data'].create({
'module': 'my',
'name': 'revenue.account.19',
'model': 'account.account',
'res_id': account_id.id
})