Skip to Content
Menu
This question has been flagged

I have 2 modules let's call them module_a and the module_b
and i want to use m2o relationships between these 2 models but for both sides and here is the sample code that shows what i am trying to do is 


module_a/models/model_a.py

from odoo import models, fields, api


class module_a(models.Model):

_name = 'module_a.module_a'

_description = 'module_a.module_a'


name = fields.Char()

value = fields.Integer()

value2 = fields.Float(compute="_value_pc", store=True)

description = fields.Text()

module_b_id = fields.Many2one('module_b.module_b')


@api.depends('value')

def _value_pc(self):

for record in self:

record.value2 = float(record.value) / 100



 module_a/__manifest__.py

{

'name': "module_a",

'summary': "Short (1 phrase/line) summary of the module's purpose",

'description': """

Long description of module's purpose

""",

'author': "My Company",

'website': "https://www.yourcompany.com",

'category': 'Uncategorized',

'version': '0.1',

'depends': ['base'],

'data': [

'security/ir.model.access.csv',

'views/views.xml',

],

}



this is the module_b
module_a/models/model_b.py

from odoo import models, fields, api


class module_b(models.Model):

_name = 'module_b.module_b'

_description = 'module_b.module_b'


name = fields.Char()

value = fields.Integer()

value2 = fields.Float(compute="_value_pc", store=True)

description = fields.Text()

module_a_id = fields.Many2one('module_a.module_a')

module_a_value = fields.Integer(compute='_compute_module_a_id_value')


@api.depends('value')

def _value_pc(self):

for record in self:

record.value2 = float(record.value) / 100


@api.depends('module_a_id')

def _compute_module_a_id_value(self):

for rec in self:

rec.module_a_value =rec.module_a_id.value if rec.module_a_id else False

 module_b/__manifest__.py

{

'name': "module_b",

'summary': "Short (1 phrase/line) summary of the module's purpose",

'description': """

Long description of module's purpose

""",

'author': "My Company",

'website': "https://www.yourcompany.com",

'category': 'Uncategorized',

'version': '0.1',

'depends': ['base','module_a'],

'data': [

'security/ir.model.access.csv',

'views/views.xml',

],

}


ERROR


RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
  File "/home/trishan/crede/odoo/odoo/http.py", line 1788, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/service/model.py", line 152, in retrying
    result = func()
             ^^^^^^
  File "/home/trishan/crede/odoo/odoo/http.py", line 1816, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/http.py", line 2020, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/addons/base/models/ir_http.py", line 221, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/http.py", line 757, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/addons/web/controllers/dataset.py", line 25, in call_kw
    return self._call_kw(model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/addons/web/controllers/dataset.py", line 21, in _call_kw
    return call_kw(Model, method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/api.py", line 480, in call_kw
    result = _call_kw_model(method, model, args, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/api.py", line 451, in _call_kw_model
    result = method(recs, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/addons/web/models/models.py", line 47, in web_search_read
    values_records = records.web_read(specification)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/addons/web/models/models.py", line 86, in web_read
    values_list: List[Dict] = self.read(fields_to_read, load=None)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/models.py", line 3577, in read
    return self._read_format(fnames=fields, load=load)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/models.py", line 3790, in _read_format
    vals[name] = convert(record[name], record, use_display_name)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/trishan/crede/odoo/odoo/fields.py", line 3126, in convert_to_read
    return value.id
           ^^^^^^^^
AttributeError: '_unknown' object has no attribute 'id'

The above server error caused the following client error:
OwlError: An error occured in the owl lifecycle (see this Error's "cause" property)
    Error: An error occured in the owl lifecycle (see this Error's "cause" property)
        at handleError (http://localhost:8069/web/assets/9d44c3b/web.assets_web.min.js:925:101)
        at App.handleError (http://localhost:8069/web/assets/9d44c3b/web.assets_web.min.js:1576:29)
        at ComponentNode.initiateRender (http://localhost:8069/web/assets/9d44c3b/web.assets_web.min.js:1017:19)

Caused by: RPC_ERROR: Odoo Server Error
    RPC_ERROR
        at makeErrorFromResponse (http://localhost:8069/web/assets/9d44c3b/web.assets_web.min.js:2929:163)
        at XMLHttpRequest.<anonymous> (http://localhost:8069/web/assets/9d44c3b/web.assets_web.min.js:2933:13)

In case , I have used the related field also instead of using the compute to get value to the model_a_id_value and it is also not working , also I put the module_b as a depends in module_a , it also throw the keyerror as this and i think it cause of the circular dependencies , 
KeyError: 'module_b.module_b'


so what should i do ? is there are fix for this ? 
I want to use m2o relationships with module_a and module_b for both sides ? 


Avatar
Discard
Related Posts Replies Views Activity
2
Jun 25
1167
0
Sep 24
584
0
Aug 24
1496
1
Mar 15
3980
4
Jun 25
1804