I build my own model for/in odoo 16 ce. That seems to be ready for use - so I could do there what I should could.
the next step should be to inherit sale and project (also Tasks) with some Informations out of my own model.
First step would be to inherit sale.oder with
inherit_sale.py
from odoo import models, fields, api, _
class SaleRealEstate(models.Model):
_inherit ='sale.order'
immospectr_realestate_id = fields.Many2one('cre8.real.estate', 'Real Estate Address')
def name_get(self):
result = []
for record in self:
name = cre8.real.estate.cre8_tag
result.append((record.id, record.cre8_tag))
return result
and inherit_sale_views.xml
sale.order.inherited
sale.order
I could see this many2one filed in sale.order and use it (new entry) for one time. When I've got something in the table of my own model, there's an error all the time. I think that's because of using get_name ans compute in my model.
Field to get out of cre8_real_estate.py
class cre8RealEstate(models.Model):
_name = 'cre8.real.estate'
row 118 to 122
cre8_tag = fields.Char(
string=u'Tag',
readonly=True,
compute='_compute_cre8_tag',
store=True
row 168 to 174
@api.depends('cre8_zip','cre8_city','cre8_street','cre8_house_number','cre8_house_number_additive')
def _compute_cre8_tag(self):
for record in self:
if record.cre8_zip and record.cre8_city and record.cre8_street and record.cre8_house_number:
record.cre8_tag = _("%s %s, %s %s %s") % (record.cre8_zip ,record.cre8_city,record.cre8_street,record.cre8_house_number,record.cre8_house_number_additive if record.cre8_house_number_additive else '')
else:
record.cre8_tag = "
row 182 to 186
def name_get(self):
result = []
for r in self:
result.append((r.id, r.cre8_tag))
return result
Everything works fine till the use as a many2one in sale
Here's the error:
Traceback (most recent call last): File "/opt/odoo/odoo/odoo/api.py", line 989, in get cache_value = field_cache[record._ids[0]] KeyError: (1, '79199 Kirchzarten, Freiburger Str. 6 ') During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/opt/odoo/odoo/odoo/fields.py", line 1160, in __get__ value = env.cache.get(record, self) File "/opt/odoo/odoo/odoo/api.py", line 996, in get raise CacheMiss(record, field) odoo.exceptions.CacheMiss: "cre8.real.estate((1, '79199 Kirchzarten, Freiburger Str. 6 '),).cre8_tag" During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/opt/odoo/odoo/odoo/http.py", line 1591, in _serve_db return service_model.retrying(self._serve_ir_http, self.env) File "/opt/odoo/odoo/odoo/service/model.py", line 133, in retrying result = func() File "/opt/odoo/odoo/odoo/http.py", line 1618, in _serve_ir_http response = self.dispatcher.dispatch(rule.endpoint, args) File "/opt/odoo/odoo/odoo/http.py", line 1822, in dispatch result = self.request.registry['ir.http']._dispatch(endpoint) File "/opt/odoo/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch result = endpoint(**request.params) File "/opt/odoo/odoo/odoo/http.py", line 697, in route_wrapper result = endpoint(self, *args, **params_ok) File "/opt/odoo/odoo/addons/web/controllers/dataset.py", line 42, in call_kw return self._call_kw(model, method, args, kwargs) File "/opt/odoo/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/opt/odoo/odoo/odoo/api.py", line 462, in call_kw result = _call_kw_model(method, model, args, kwargs) File "/opt/odoo/odoo/odoo/api.py", line 435, in _call_kw_model result = method(recs, *args, **kwargs) File "/opt/odoo/odoo/odoo/models.py", line 1610, in name_search return self.browse(ids).sudo().name_get() File "/opt/odoo/dev_odoo/cre8_immospectr/models/cre8_real_estate.py", line 185, in name_get result.append((r.id, r.cre8_tag)) File "/opt/odoo/odoo/odoo/fields.py", line 1186, in __get__ recs._fetch_field(self) File "/opt/odoo/odoo/odoo/models.py", line 3194, in _fetch_field self._read(fnames) File "/opt/odoo/odoo/odoo/models.py", line 3271, in _read cr.execute(query_str, params + [sub_ids]) File "/opt/odoo/odoo/odoo/sql_db.py", line 321, in execute res = self._obj.execute(query, params) psycopg2.errors.UndefinedFunction: operator does not exist: integer = record LINE 1: ...OM "cre8_real_estate" WHERE "cre8_real_estate".id IN ((1, '7... ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts.