Hi,
I'm new on odoo and i'm trying to make a relation between 2 fields and show the result on my module.
I read the document "how to build your module" from odoo but the only thing that I get are errors.
Code:
RELATION BETWEEN class "practica3.bar"(1....*) and "practica3.treballadors" (1....1)
First class(bar):
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class Bar(models.Model):
_name = 'practica3.bar'
nom = fields.Char(
string='Nom del bar',
required=True,
size=15
)
treballadors_id = fields.One2many(
'practica3.treballador',
'NIF'
)
SECOND CLASS "Treballadors"--> means workers:
from odoo import models, fields, api
class Treballador(models.Model):
_name = 'practica3.treballador'
-inherit='practica3.persona'
NIF=fields.Many2one('practica3.bar','treballadors_id')
numEmpleat= fields.Integer(
string='Numero empleat',
required=True,
size=4
)
salariMensual= fields.Integer(
string='Salari empleat',
required=True,
size=9
)
codiCompteCorrent=fields.Char(
string='Compte corrent persona',
required=True,
size=15
)
CODE INHERIT CLASS:
from odoo import models, fields, api
class Persona(models.Model):
_name = 'practica3.persona'
nom=fields.Char(
string='Nom de la persona',
required=True,
size=15
)
cognom1=fields.Char(
string='Prtimer cognom de la persona',
required=True,
size=15
)
cognom2=fields.Char(
string='Segon cognom de la persona',
required=True,
size=15
)
numSegSocial=fields.Char(
string='Numero seguretat social',
required=True,
size=12
)
NIF=fields.Char(
string='Dni',
required=True,
size=9
)
telefon=fields.Char(
string='Telefon persona',
required=True,
size=9
)
VIEW:
<record model="ir.ui.view" id="bar_tree_view">
<field name="name">bar.tree</field>
<field name="model">practica3.bar</field>
<field name="arch" type="xml">
<tree string="Bar Tree">
<field name="nom"/>
<field name="treballadors_id">
<tree>
<field name="nom"/>
</tree>
</field>
</tree>
</field>
</record>
<record model="ir.ui.view" id="bar_form_view">
<field name="name">bar.form</field>
<field name="model">practica3.bar</field>
<field name="arch" type="xml">
<form string="Bar Form">
<sheet>
<group>
<field name="nom"/>
<field name="treballadors_id">
<tree>
<field name="nom"/>
</tree>
</field>
<!-- <field name="treballadors_id"/>-->
</group>
<!--<group string="Adreça">
<field name="adrecaID" invisible="1" required="0"/>
<field name="ciutat" />
</group>-->
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="bar_search_view">
<field name="name">bar.search</field>
<field name="model">practica3.bar</field>
<field name="arch" type="xml">
<search>
<field name="nom"/>
<field name="treballadors_id">
<tree>
<field name="nom"/>
</tree>
</field>
</search>
</field>
</record>
And with this code I get the following error:
Error:
Odoo Server Error
Traceback (most recent call last):
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 1037, in _validate_fields
check(self)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 342, in _check_xml
self.postprocess_and_fields(view.model, view_doc, view.id)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 1061, in postprocess_and_fields
self.raise_view_error(message, view_id)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 516, in raise_view_error
raise ValueError(message)
ValueError: Field `treballadors_id` does not exist
Error context:
View `bar.tree`
[view_id: 277, xml_id: practica3.bar_tree_view, model: practica3.bar, parent_id: n/a]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\convert.py", line 744, in parse
self._tags[rec.tag](rec, de, mode=mode)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\convert.py", line 654, in _tag_record
id = self.env(context=rec_context)['ir.model.data']._update(rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_model.py", line 1449, in _update
record.write(values)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 421, in write
return super(View, self).write(self._compute_defaults(vals))
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 3108, in write
field.determine_inverse(records)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\fields.py", line 1071, in determine_inverse
getattr(records, self.inverse)()
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 273, in _inverse_arch
view.write(data)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 421, in write
return super(View, self).write(self._compute_defaults(vals))
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 3090, in write
self._write(old_vals)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 3256, in _write
self._validate_fields(vals)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 1041, in _validate_fields
raise ValidationError("%s\n\n%s" % (_("Error while validating constraint"), tools.ustr(e)))
odoo.exceptions.ValidationError: ('Error while validating constraint\n\nField `treballadors_id` does not exist\n\nError context:\nView `bar.tree`\n[view_id: 277, xml_id: practica3.bar_tree_view, model: practica3.bar, parent_id: n/a]', None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 651, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\pycompat.py", line 87, in reraise
raise value
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 693, in dispatch
result = self._call_function(**self.params)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 342, in _call_function
return checked_call(self.db, *args, **kwargs)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\service\model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 335, in checked_call
result = self.endpoint(*a, **kw)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 937, in __call__
return self.method(*args, **kw)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\http.py", line 515, in response_wrap
response = f(*args, **kw)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web\controllers\main.py", line 938, in call_button
action = self._call_kw(model, method, args, {})
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\web\controllers\main.py", line 926, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\api.py", line 689, in call_kw
return call_kw_multi(method, model, args, kwargs)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\api.py", line 680, in call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-48>", line 2, in button_immediate_upgrade
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\module.py", line 71, in check_and_log
return method(self, *args, **kwargs)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\module.py", line 603, in button_immediate_upgrade
return self._button_immediate_function(type(self).button_upgrade)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\module\module.py", line 542, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\registry.py", line 85, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\loading.py", line 376, in load_modules
force, status, report, loaded_modules, update_module, models_to_check)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\loading.py", line 274, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\loading.py", line 181, in load_module_graph
_load_data(cr, module_name, idref, mode, kind='data')
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\modules\loading.py", line 95, in _load_data
tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\convert.py", line 791, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\convert.py", line 852, in convert_xml_import
obj.parse(doc.getroot(), mode=mode)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\convert.py", line 741, in parse
self.parse(rec, mode)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\convert.py", line 751, in parse
exc_info[2]
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\pycompat.py", line 86, in reraise
raise value.with_traceback(tb)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\convert.py", line 744, in parse
self._tags[rec.tag](rec, de, mode=mode)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\tools\convert.py", line 654, in _tag_record
id = self.env(context=rec_context)['ir.model.data']._update(rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_model.py", line 1449, in _update
record.write(values)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 421, in write
return super(View, self).write(self._compute_defaults(vals))
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 3108, in write
field.determine_inverse(records)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\fields.py", line 1071, in determine_inverse
getattr(records, self.inverse)()
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 273, in _inverse_arch
view.write(data)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir\ir_ui_view.py", line 421, in write
return super(View, self).write(self._compute_defaults(vals))
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 3090, in write
self._write(old_vals)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 3256, in _write
self._validate_fields(vals)
File "C:\Program Files (x86)\Odoo 11.0\server\odoo\models.py", line 1041, in _validate_fields
raise ValidationError("%s\n\n%s" % (_("Error while validating constraint"), tools.ustr(e)))
odoo.tools.convert.ParseError: "Error while validating constraint
Field `treballadors_id` does not exist
Error context:
View `bar.tree`
[view_id: 277, xml_id: practica3.bar_tree_view, model: practica3.bar, parent_id: n/a]
None" while parsing file:/c:/program files (x86)/odoo 11.0/server/odoo/addons/practica3/views/views.xml:5, near
<record model="ir.ui.view" id="bar_tree_view">
<field name="name">bar.tree</field>
<field name="model">practica3.bar</field>
<field name="arch" type="xml">
<tree string="Bar Tree">
<field name="nom"/>
<field name="treballadors_id">
<tree>
<field name="nom"/>
</tree>
</field>
</tree>
</field>
</record>
I hope you can help me!!! Thanks!
Odoo customization tutorial: https://learnopenerp.tumblr.com/