Search code examples
odooodoo-11

Odoo add function to defaul create action


I've got this function

def add_default_docs(self):
for r in self:
    id = self.id

    labs_archive_journal_type_id = r.journal_type_id.id

    archive_doc_name_ids = self.env['labs.archive.journal_type'].search([('id', '=', labs_archive_journal_type_id)]).archive_doc_name_ids

    for n in archive_doc_name_ids: 

        self.env['labs.archive.document'].create({

                    "archive_journal_id": id, 

                    "name": n.id
})

How could I call it when I press 'Create' button and create new record?


Solution

  • Whichever model you want to fire this function on creation on new model, inherit that model if that model is odoo built-in or if your own model, within that model definition inherit create method as following:

    class ClassName(models.Model)
      _inherit = 'model.name'
    
      @api.multi
      def create(self, vals):
        records = super(ClassName, self).create(vals)
        records.add_default_docs()
        return records
    

    If your model is defined in your own custom module, you can just insert this create function within that model definition, you won't need to inherit in new class.