在一个已经相关的领域--Odoo v8上关联One2many领域

时间:2017-11-03 04:48:50

标签: python openerp odoo-8

我需要关联另一个模型的One2many字段上的字段,到目前为止我尝试过这样:

field_many = fields.Many2one('other.model', string="Many field")
field_related = fields.Float(string="My field", related="field_many.one2manyfield.field")

但它让我失望:

Traceback (most recent call last):
File "werkzeug\serving.py", line 177, in run_wsgi

File "werkzeug\serving.py", line 165, in execute

File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\service\server.py", line 294, in app
return self.app(e, s)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\service\wsgi_server.py", line 216, in application
return application_unproxied(environ, start_response)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\service\wsgi_server.py", line 202, in application_unproxied
result = handler(environ, start_response)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\http.py", line 1299, in __call__
return self.dispatch(environ, start_response)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\http.py", line 1273, in __call__
return self.app(environ, start_wrapped)
File "werkzeug\wsgi.py", line 579, in __call__

File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\http.py", line 1444, in dispatch
ir_http = request.registry['ir.http']
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\http.py", line 355, in registry
return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\modules\registry.py", line 339, in get
update_module)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\modules\registry.py", line 370, in new
openerp.modules.load_modules(registry._db, force_demo, status, update_module)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\modules\loading.py", line 357, in load_modules
registry.setup_models(cr)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\modules\registry.py", line 194, in setup_models
model._setup_fields(cr, SUPERUSER_ID)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\api.py", line 268, in wrapper
return old_api(self, *args, **kwargs)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\api.py", line 372, in old_api
result = method(recs, *args, **kwargs)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\models.py", line 3010, in _setup_fields
field.setup(self.env)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\fields.py", line 468, in setup
self._setup_related(env)
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\fields.py", line 514, in _setup_related
field = recs._fields[name]
  KeyError: 'one2manyfield'

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:2)

但是你正在创建one2many字段中的相关字段?!!不要忘记o2m可以有多条记录,因此在尝试获取 时,odoo会感到困惑。

 o2m_field.some_field  # witch record to access [like singleton error]

但错误显示odoo在one2manyfield中找不到名为other.model的字段,它是否也是相关字段。

如果是这样我觉得odoo找不到它,因为默认情况下相关字段没有存储在数据库中。但是存储一个相关的字段是one2many字段不只是添加store=True我没有尝试过,但我们知道o2many字段在其他模型中应该有一个many2one。

因此最好通过示例来解释您想要的内容,我认为您需要使用计算字段的功能。

相关问题