python - Odoo 14 "my_method_name" no es una acción válida en "my_module_name"

CorePress2024-01-24  12

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

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare