I wrote a wizard which form view should show a one2many field with rows taken from context['active_ids'].
I set the one2many default correctly, but when the form opens, no rows are showed.
Did I miss anything? (I apologize for code bad indentation)
class delivery_wizard(models.TransientModel):
_name = 'as.delivery.wizard'
address = fields.Many2one('res.partner')
details = fields.One2many('as.delivery.detail.wizard', 'delivery')
carrier = fields.Many2one('delivery.carrier')
@api.model
def default_get(self, fields_list):
res = models.TransientModel.default_get(self, fields_list)
ids = self.env.context.get('active_ids', [])
details = self.env['as.delivery.detail'].browse(ids)
dwz = self.env['as.delivery.detail.wizard']
dws = []
for detail in details:
dw = dwz.create({
'production': detail.production_id.id,
'quantity': detail.quantity,
'actual_quantity': detail.quantity,
'enabled': detail.production_id.state == 'done',
'delivery': self.id,
})
dws.append(dw.id)
res['details'] = [(6, False, dws)]
res['address'] = details[0].delivery_id.address_id.id
return res
class delivery_detail_wizard(models.TransientModel):
_name = 'as.delivery.detail.wizard'
production = fields.Many2one('as.production')
quantity = fields.Float()
actual_quantity = fields.Float()
force = fields.Boolean()
enabled = fields.Boolean()
delivery = fields.Many2one('as.delivery.wizard')
The problem may be there :
Your details field is a One2many field, [(6,0, [IDS])] are for Many2many. In your case, you don't need to assign anything to the details fields ; it's a One2many, so it's automatic as you already created the corresponding Many2one record (dw).
Little reminder from the doc :
Also, try to follow odoo guidelines for Many2One/One2many fields if you want your code to be easily understandable by other people :