У меня есть 3 модели. Модуль 1 имеет связь One2many с модулем 2. Модуль 2 имеет связь One2many с модулем 3. Я пытаюсь использовать представление, созданное для модуля 1, для ввода данных во все три модуля. Код приведен ниже. моделей и представлений. Когда я пытаюсь добавить данные в Модуль 3, я получаю следующую ошибку.
Traceback (most recent call last):
File "C:\Apps\hrms\odoo\models.py", line 5322, in _update_cache
field_values = [(fields[name], value) for name, value in values.items()]
File "C:\Apps\hrms\odoo\models.py", line 5322, in
field_values = [(fields[name], value) for name, value in values.items()]
KeyError: 'name'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Apps\hrms\odoo\http.py", line 1632, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "C:\Apps\hrms\odoo\service\model.py", line 133, in retrying
result = func()
File "C:\Apps\hrms\odoo\http.py", line 1659, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "C:\Apps\hrms\odoo\http.py", line 1863, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "C:\Apps\hrms\odoo\addons\base\models\ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
File "C:\Apps\hrms\odoo\http.py", line 716, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "c:\apps\hrms\addons\web\controllers\dataset.py", line 42, in call_kw
return self._call_kw(model, method, args, kwargs)
File "c:\apps\hrms\addons\web\controllers\dataset.py", line 33, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "C:\Apps\hrms\odoo\api.py", line 468, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "C:\Apps\hrms\odoo\api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "C:\Apps\hrms\odoo\models.py", line 6572, in onchange
record._update_cache(changed_values, validate=False)
File "C:\Apps\hrms\odoo\models.py", line 5328, in _update_cache
value = field.convert_to_cache(value, self, validate)
File "C:\Apps\hrms\odoo\fields.py", line 2980, in convert_to_cache
id_ = comodel.new(value, origin=origin).id
File "C:\Apps\hrms\odoo\models.py", line 5754, in new
record._update_cache(values, validate=False)
File "C:\Apps\hrms\odoo\models.py", line 5324, in _update_cache
raise ValueError("Invalid field %r on model %r" % (e.args[0], self._name))
ValueError: Invalid field 'name' on model 'zm.strategic.plans'
The above server error caused the following client error:
null
Сообщается, что поле недопустимо в модели.
Ниже приведен код для моделей...from odoo import api, fields, models
class StrategicPlans(models.Model):
_name = "zm.strategic.plans"
_description = "National Strategic Plans"
_rec_name = "doc_title"
doc_title = fields.Char(string="Title", required="true")
level = fields.Selection([
('1', 'National'),
('2', 'Ministerial')
])
ministry = fields.Char(string="Ministry")
period = fields.Char(string="Plan Year")
objective_ids = fields.One2many('zm.strategic.objective', 'objective_id', string='Strategic Objectives',
copy=True, auto_join=True, ondelete='cascade')
class Objective(models.Model):
_name = 'zm.strategic.objective'
_description = 'Strategy'
name = fields.Char(string='Objective', required=True)
objective_id = fields.Many2one('zm.strategic.plans', string='Objective', required=True,
index=True, copy=False)
objective = fields.Char(string="Strategic Objectives", required="true")
strategy_obj_ids = fields.One2many('zm.strategic.strategy', 'strategy_id', string='Strategies',
copy=True, auto_join=True)
class Strategy(models.Model):
_name = 'zm.strategic.strategy'
_description = 'Strategy'
name = fields.Char(string='Strategy', required=True)
strategy_id = fields.Many2one('zm.strategic.plans', string='Objective', required=True,
index=True, copy=False)
Ниже приведен код представления, которое должно обрабатывать все это.
zm.strategic.plans.form
zm.strategic.plans
Strategic Plans
ir.actions.act_window
zm.strategic.plans
tree,form,kanban,pivot
Я попытался определить контекст доступа к полям. Я вижу поле и имя, но не могу добавить информацию через это поле. Я использовал код ниже
context="{'default_strategic_objective_id': active_id}" mode="tree,form"
Подробнее здесь: https://stackoverflow.com/questions/786 ... ip-in-odoo