Estoy aprendiendo odoo 14 y estoy intentando agregar un botón en mi vista de formulario. Desafortunadamente, cada vez que intento actualizar mi módulo personalizado aparece este error:
odoo.exceptions.ValidationError: Error while validating view:
button_custom_method is not a valid action on library.book
Mi archivo Python de módulo personalizado biblioteca_book.py:
from odoo import models, fields, api
class LibraryBook(models.Model):
_name = 'library.book'
_description = 'Library Book'
name = fields.Char('Title', required=True)
date_release = fields.Date('Release Date')
author_ids = fields.Many2many('res.partner', string='Authors')
def button_custom_method(self):
print("Button custom text")
Y mi vista biblioteca_book.xml:
<odoo>
<!-- Form View -->
<record id="library_book_view_form" model="ir.ui.view">
<field name="name">Library Book Form</field>
<field name="model">library.book</field>
<field name="arch" type="xml">
<form>
<header>
<button name="button_custom_method" string="Please click me" type="object"/>
</header>
<group>
<group>
<field name="name"/>
<field name="author_ids" widget="many2many_tags"/>
</group>
<group>
<field name="date_release"/>
</group>
</group>
</form>
</field>
</record>
</odoo>
------------------------------------
Tuve el mismo problema y me di cuenta de que había olvidado importar el archivo en la carpeta "__init__.py". archivo.
respondido
22 de abril de 2021 a las 10:12
BollosGlazing
BollosGlazing
41
1
1 insignia de bronce
------------------------------------
Odoo mostrará este mensaje de error cuando no haya ninguna función con el mismo nombre que su botón en el modelo de vista donde definió el botón.
elif type_ == 'object':
func = getattr(type(name_manager.Model), name, None)
if not func:
msg = _(
"%(action_name)s is not a valid action on %(model_name)s",
action_name=name, model_name=name_manager.Model._name,
)
self.handle_view_error(msg)
Probablemente, definiste la función en el modelo biblioteca.libro y olvidaste reiniciar Odoo.
------------------------------------
Tuve el mismo problema ahora mismo. yo no lo hiceLo dejé durante media hora y luego me di cuenta de que puse el método del botón en el modelo incorrecto)
------------------------------------
-------------- ------------------
Poner tipo="objeto" primero:
<button type="object" name="button_custom_method" string="Please click me"/>
respondido
17 de mayo de 2021 a las 8:14 am
Hery-Zo no tengo miedo
Hery-Zo no tengo miedo
1