加载一个account.account实体作为默认实体

时间:2020-02-27 08:30:25

标签: odoo odoo-13

我正在尝试将帐户(在模块中)创建为默认实体,因此它是可部署的实体。 为此,我在模型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
})

0 个答案:

没有答案