Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
1 Răspunde
32873 Vizualizări

Hi, i am a newbie in odoo programming. I got this warning when creating  a One2many field relation, where I took the data from the Many2one field in the same model. 

Here is my custom code:

class ReferInherit(models.Model):
_inherit = 'qc.inspection'

reference_line = fields.One2many('qc.inspection', 'picking', readonly=False, store=True)

and I took the data from here:

class QcInspection(models.Model):
_inherit = 'qc.inspection'

@api.multi
@api.depends('object_id')
def _compute_picking(self):
for inspection in self:
inspection.picking = False
if inspection.object_id:
if inspection.object_id._name == 'stock.move':
inspection.picking = inspection.object_id.picking_id
elif inspection.object_id._name == 'stock.picking':
inspection.picking = inspection.object_id
elif inspection.object_id._name == 'stock.pack.operation':
inspection.picking = inspection.object_id.picking_id
    picking = fields.Many2one(comodel_name="stock.picking", compute="_compute_picking", store=True)

When I run it, I got this Warning:

The operation cannot be completed: another model requires the record being deleted. If possible, archive it instead.
Model: Quality control inspection (qc.inspection), Constraint: qc_inspection_picking_fkey

what's wrong with my code? and how to solve it? Sorry for my bad english and Thanks before.


Imagine profil
Abandonează
Autor

Hi, Kanakinfosystems

Thanks for your answer.

This is very helpful. Your answer is so inspiring for me. Thanks a lot:)

Cel mai bun răspuns

Hi Ahmad,

Please see below code example for correct implementation of One2many relational field.

class QcInspection(models.Model):
    _name = 'qc.inspection'

    line_ids = fields.One2many(comodel_name='qc.inspection.line', inverse_name='inspection_id', string='Lines')

class QcInspectionLine(models.Model):
   _name = 'qc.inspection.line'

   inspection_id = fields.Many2one('comodel_name='qc.inspection', string="Inspection", ondelet="cascade")

Note:  Inverse field should not be computed, as per your code you are trying to compute value of picking fields.

Thanks.


Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
3
dec. 17
3846
1
iul. 19
13355
0
apr. 17
6491
1
mar. 23
1908
0
dec. 22
2584