Skip to Content
Menu
This question has been flagged
2 Replies
3531 Views

I'm trying to add a field on res.partner, but everytime that I upgrade the module the field just doesn't appear, even on postgresql...
And after I restart the server, I got a error psycopg2.errors.UndefinedColumn: column res_partner.distrito does not exist

distrito = fields.Char(string='Bairro') <= field problem

I have no idea what is happening. 

My code:

from odoo import models, fields, api


class ResPartner(models.Model):
 _inherit = 'res.partner'

tipo_cliente = fields.Selection( string= 'Tipo do cliente', selection=[('gov','Governo'),('pri','Privado')])
tipo_contato_id = fields.Many2one( string='Tipo do contato', comodel_name='tipo.contato')
orgao_id = fields.Many2one( string='Orgão', comodel_name='orgao.governo')
distrito = fields.Char(string='Bairro') #<- field that doesn't appear
partido_id = fields.Many2one( string='Partido', comodel_name='partido.governo')
departamento_id = fields.Many2one( string='Departamento', comodel_name='departamento')
is_customer = fields.Boolean( string='É cliente?', default=False)

class Departamento(models.Model):
 _name = 'departamento'
 _description = 'Departamento'


name = fields.Char(string='Nome do departamento')

class TipoContato(models.Model):
 _name = 'tipo.contato'
 _description = 'Tipo do contato'


name = fields.Char(string='Tipo')


class OrgaoGoverno(models.Model): 
_name = 'orgao.governo'
 _description = 'Orgão do governo'
name = fields.Char(string='Nome')

class PartidoGoverno(models.Model):
 _name = 'partido.governo'
 _description = 'Partido'
name = fields.Char(string='Sigla')

ERROR:

During handling of the above exception, another exception occurred:
odoo_13 |
odoo_13 | Traceback (most recent call last):
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_cron.py", line 230, in _process_jobs
odoo_13 | registry[cls._name]._process_job(job_cr, job, lock_cr)
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_cron.py", line 131, in _process_job
odoo_13 | now = fields.Datetime.context_timestamp(cron, datetime.now())
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1776, in context_timestamp
odoo_13 | tz_name = record._context.get('tz') or record.env.user.tz
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1063, in __get__
odoo_13 | self.compute_value(recs)
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1144, in compute_value
odoo_13 | records._compute_field_value(self)
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/models.py", line 3827, in _compute_field_value
odoo_13 | field.compute(self)
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/fields.py", line 635, in _compute_related
odoo_13 | record[self.name] = self._process_related(value[self.related_field.name])
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/models.py", line 5454, in __getitem__
odoo_13 | return self._fields[key].__get__(self, type(self))
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1046, in __get__
odoo_13 | recs._fetch_field(self)
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/models.py", line 2871, in _fetch_field
odoo_13 | self._read(fnames)
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/models.py", line 2942, in _read
odoo_13 | cr.execute(query_str, params)
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/sql_db.py", line 163, in wrapper
odoo_13 | return f(self, *args, **kwargs)
odoo_13 | File "/usr/lib/python3/dist-packages/odoo/sql_db.py", line 240, in execute
odoo_13 | res = self._obj.execute(query, params)
odoo_13 | psycopg2.errors.UndefinedColumn: column res_partner.distrito does not exist
odoo_13 | LINE 1: ...ontato_id","res_partner"."orgao_id" as "orgao_id","res_partn...
odoo_13 | ^

Avatar
Discard
Best Answer

it seems cron(Scheduled Actions) run before the module update has been completed and rollback transaction. 

so disable cron for the time being while module upgrade or upgrade with --max-cron-threads=0 command it will not start any cron thread/process for cron

Avatar
Discard
Best Answer

Does the field exist in Settings -> Technical -> Fields? If so, try:

distrito = fields.Char(string='Bairro', store=True) 

If this field was set to a compute originally, and then the compute was removed, the store=False that is automatically applied by a compute remains even after the compute is gone. This is the main reason I've had this kind of issue before.

Cheers

Jake Robinson

Avatar
Discard
Author

I've checked both on field and models on settings and wasn't there....

After I restart the server, that error appear and the only way to fix is removing the field on the .py file

Related Posts Replies Views Activity
0
Jan 20
2661
0
May 22
908
1
Aug 20
4159
2
Aug 20
15767
0
Oct 20
3375