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 

""" Return the (sudoed) `ir.model.fields` record with the given model and name.
        The result may be an empty recordset if the model is not found.
        """
        field_id = self._get_id(model_name, name) if model_name and name else False
        return self.sudo().browse(field_id)
    @tools.ormcache('model_name', 'name')
    def _get_id(self, model_name, name):
        self.env.cr.execute("SELECT id FROM ir_model_fields WHERE model=%s AND name=%s",
                            (model_name, name))
        result = self.env.cr.fetchone()
        return result and result[0]
    @api.multi
    def _drop_column(self):
        tables_to_drop = set()
        for field in self:
            if field.name in models.MAGIC_COLUMNS:
                continue
            model = self.env[field.model]
            if tools.column_exists(self._cr, model._table, field.name) and \
                    tools.table_kind(self._cr, model._table) == 'r':
                self._cr.execute('ALTER TABLE "%s" DROP COLUMN "%s" CASCADE' % (model._table, field.name))
            if field.state == 'manual' and field.ttype == 'many2many':
                rel_name = field.relation_table or model._fields[field.name].relation