with - odoo python
Activar Odoo fields_view_get dinámicamente después de que todos los registros se carguen y la función fields_view_get se llame (1)
Me gustaría activar la función fields_view_get
dinámicamente después de hacer algunas funciones. fields_view_get
la función fields_view_get
y devuelvo mis resultados. Esto se ve afectado en la vista XML solo la primera vez que se llama la función real. Así que necesito actualizar la vista para obtener nuevos valores en el arco .
¿Hay alguna manera de hacer que la vista de odoo se cambie con la función fields_view_get
incluso después de que se haya llamado a la función por primera vez?
Mi intento:
# here fields view get changes the button string from getting arch
# I overrided the fields_view_get on event model and its get affected and works
# perfectly when I click on main menu Event.but not after the records loaded.
@api.multi
def send_mail_event(self):
x = self.event_id.fields_view_get(view_id=None, view_type=''form'', toolbar=False, submenu=False)
self.send_mail_event_reg_link(test=True)
return x
El fields_view_get
se llama desde load_views
en https://github.com/odoo/odoo/blob/10.0/odoo/models.py#L1334 y load_views
es llamado por el administrador de vistas del cliente web en https://github.com/odoo/odoo/blob/10.0/addons/web/static/src/js/view_manager.js#L130
Ahora, vea en view_manager.js
dónde se llama a load_view
desde y cuándo. Podemos ver que se llama en https://github.com/odoo/odoo/blob/10.0/addons/web/static/src/js/view_manager.js#L182 que es el llamado que nos interesa.
La función willStart
si ve en el widget.js se llama cuando el widget se adjunta en el DOM que administra. El archivo adjunto ocurre solo una vez cuando se carga el dom.
Entonces, para fields_view_get
, fields_view_get
se ejecuta una vez cuando se carga la página y si desea volver a llamar, deberá hacerlo desde el lado del cliente js / web de las cosas llamando a la función load_views
javascript.
Pero generalmente en Odoo, intente evitar las extensiones de cliente web si es posible. Si desea realizar cambios en la vista actual en función de las acciones del usuario, puede utilizar onchange
o cualquier otro enganche de fondo.