problems with KeyOrror Odoo v8

1

I have a module to control a bus fleet with several models. Two of them are Lines and Buses .

I have a type one2many relationship (one2many bus lines and the corresponding line number2one to buses) .

The problem is that the many2one in lines called autobus_id that goes to bus does not detect it and tells me that it does not exist.

If you notice it is written the same:

  

The error is: KeyError: 'autobus_id'

Does anyone tell me why this happens?

Here I leave the code of Buses :

class autobus(osv.osv):
    _name = 'Autobus'
    _rec_name = 'matricula' 
    _sql_constraints = [
        ('matricula_uniq', 'unique (matricula)', ('La matrícula debe ser única')),      
    ]
    def precio(self, cr, uid, ids, field_name, arg, context=None):
        records = self.browse(cr, uid, ids)
        precio = 1.20
        res = {}
        for r in records:
            if r.tipo == 'DP':
                res[r.id] = precio + 0.50
            elif r.tipo == 'UP':
                res[r.id] = precio
            elif r.tipo == 'M':
                res[r.id] = precio - 0.50
        return res

    _columns = {        
        'matricula' : fields.char(
            string='Matrícula',
            required=True,
            size=15
        ),
        'marca' : fields.char(
            string='Marca'
        ),
        'modelo' : fields.char(
            string='modelo'
        ),      
        'tipo' : fields.selection(
            (('UP','Una planta'),
            ('DP',' Dos plantas'),
            ('M','Minuvalidos')),
            string="Tipo de autobus",
            required=True
        ),
        'n_place' : fields.integer(
            'Numero de plazas'
        ),
        'precio': fields.function(
            precio,
            type = 'float',
            string='Precio',
            readonly=True,
            help='Campo calculado a traves de un método. Según el tipo de autobus tendrá un precio distinto.'
        ),
        'image_medium' : fields.binary(
            string='Imagen'
        ),
        'motor' : fields.char(
            string='Motor'
        ),
        'consume' : fields.integer(
            'Consumo (a los cien)'
        ),
        'job_sunday' : fields.boolean(
            string='¿Trabaja los sábados?'
        ),      
        'conductor_id' : fields.many2one(
            'conductor',
            string='Conductor'
        ),
        'linea_ids' : fields.one2many(
            'linea',
            'autobus_id',
            'Lineas'
        )           
    }
autobus()

And here the one of lines :

class linea(osv.osv):
    _name = 'Lineas'
    _rec_name = 'n_linea'
    _sql_constraints = [
        ('nlinea_uniq', 'unique (n_linea)', ('No puede haber dos lineas con el mismo número'))
    ]   
@api.one
@api.constrains('n_linea')
def _check_linea(self):     
    if len(self.n_linea) > 2:
        raise ValidationError(('El numero de línea no puede contener mas de 2 numeros'))

@api.one
@api.constrains('n_linea')
def _check_linea2(self):        
    if self.n_linea > 15:
        raise ValidationError(('El límite de líneas'))

    _columns = {
        'n_linea' : fields.integer(
            'Número de línea'
        ),
        'h_salida' : fields.integer(
            'Hora de salida', help='El formato de hora es Horas:Minutos. Recuérdalo.'
        ),
        'h_entrada' : fields.integer(
            'Hora de entrada', help='El formato de hora es Horas:Minutos. Recuérdalo.'
        ),
        'd_salida' : fields.char(
            string='Direccion de la salida', help='Direccion desde donde sale el auttobus para hacer su recorrido.'
        ),
        'd_entrada' : fields.char(
            string='Direccion de la entrada', help='Direccion de finalización del recorrido del autobus.'
        ),
        'autobus_id' : fields.many2one(
            'autobus',
            'Autobus'
        ),      
        'paradas_id' : fields.many2many(
            'parada',
            'paradas_ids',
            'linea_id',
            'parada_id',
            string='Paradas'
        )

    }

linea()
    
asked by jorge arenas duran 15.03.2017 в 20:50
source

0 answers