Hello,
Your problem is "very very" simple,
Solution :
Just modify the name of table in M2M field definition. Like as below, ( I have marked as bold + italic + underline )
pickings = fields.Many2many('stock.picking', 'fbv_use_carrier_line', 'fbv_id', 'picking_id', 'Picking List')
Reason of Error :
When you define many2many field, 2nd argument creates the table. Now you have given the same name of the table which you have used while defining following class, ( I have marked bold + italic + underline )
class fbv_use_carrier_line(models.TransientModel):
_name='fbv.use.carrier.line'
picking_id = fields.Many2one('stock.picking', string='List Piking')
fbv_id = fields.Many2one('fbv.use.carrier', string='FBV Use Carrier ID'
By adding same name of new M2M table, system overrides new table definition and of course "ID" column will be removed. ( FYI : M2M table stores only 2 columns ). That is why when system evaluates following line,
fbv_id = fields.Many2one('fbv.use.carrier', string='FBV Use Carrier ID'
it shows you error. ( ProgrammingError: column "id" does not exist )
Hope this answer will lead to exact solution of your problem !
Did you defined name for your class ? like _name = 'fbv.use.carrier'