Impacted versions: all

On the model "ir.model.field" there is a field called "copy" : https://github.com/odoo/odoo/blob/master/odoo/addons/base/models/ir_model.py#L322

This name conflict with the method "copy" that exist browse record
https://github.com/odoo/odoo/blob/master/odoo/models.py#L4203

This make impossible to use the method copy on ir.model.field
And also raise warning when we make an inherits of the class ir.model.field (https://github.com/odoo/odoo/blob/master/odoo/models.py) as the field conflict with the method name

@odony @rco-odoo 

ON CONFLICT (module, name)
                DO UPDATE SET date_update=(now() at time zone 'UTC') {where}
            """.format(
                rows=", ".join([rowf] * len(sub_rows)),
                where="WHERE NOT ir_model_data.noupdate" if update else "",
            )
            try:
                self.env.cr.execute(query, [arg for row in sub_rows for arg in row])
            except Exception:
                _logger.error("Failed to insert ir_model_data\n%s", "\n".join(str(row) for row in sub_rows))
                raise
        
        for prefix, suffix, res_model, res_id, noupdate in rows:
            self.loads[(prefix, suffix)] = (res_model, res_id)
    @api.model
    def _load_xmlid(self, xml_id):
        """ Simply mark the given XML id as being loaded, and return the
            corresponding record.
        """
        record = self.xmlid_to_object(xml_id)
        if record:
            prefix, suffix = xml_id.split('.', 1)
            self.loads[(prefix, suffix)] = (record._name, record.id)
            for parent_model, parent_field in record._inherits.items():
                parent = record[parent_field]
                puffix = suffix + '_' + parent_model.replace('.', '_')
                self.loads[(prefix, puffix)] = (parent._name, parent.id)
        return record
    @api.model
    def _module_data_uninstall(self, modules_to_remove):