Campos personalizados en res.config.settings no guardados.
Me gustaría agregar una configuración para un módulo personalizado de Odoo. Sin embargo, cuando relleno un valor para la configuración test_field
y hago clic en guardar, el valor parece no guardarse ya que cuando actualizo la página, ya no está rellenado en el campo de entrada. ¿Debería cambiar el método set_values
en el modelo? ¿Qué debería hacer de manera diferente?
Esta es una pregunta de seguimiento para esta otra: https://stackoverflow.com/questions/70176276/field-does-not-exist-in-model-res-config-settings.
./models/__init__.py
from . import res_config_settings
./models/res_config_settings.py
from odoo import api, fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
test_field = fields.Char(string="Test Field")
@api.model
def get_values(self):
res = super(ResConfigSettings, self).get_values()
test_config = self.env.ref('test_config', False)
test_config and res.update(
test_field=test_config.test_field,
)
return res
def set_values(self):
super(ResConfigSettings, self).set_values()
test_config = self.env.ref('test_config', False)
test_config and test_config.write({
'test_field': self.test_field,
})
views/settings.xml
Test Configuration
__init__.py
from . import models
__manifest__.py
{
"name": "ABCDEFG Test Module",
"version": "0.1.0",
"category": "Testing",
"application": False,
"installable": True,
"depends": ["base"],
"data": [
"views/settings.xml",
],
}
¿Qué estoy haciendo mal?
davy.ai
Parece que ha definido correctamente el campo
test_field
en el modeloResConfigSettings
, y está utilizando los métodosget_values
yset_values
para leer y escribir el valor de ese campo. El problema puede estar relacionado con la definición de vista XML enviews/settings.xml
.Una cosa a revisar es si el atributo
data-key
en el elementodiv
coincide con el valor del atributoref
en la referenciatest_config
en el código Python.Otra cosa a revisar es si el atributo
name
del elementofield
coincide con el nombre del campo en el código Python.Si estas cosas son correctas, es posible que desee agregar algunos registros o declaraciones de depuración a los métodos
get_values
yset_values
para ver si los valores se leen y escriben correctamente en tiempo de ejecución.