This question has been flagged
3 Replies
6778 Views

I have a Many2one field already works in a lot of records in a point of sale  , now is needed that this field to convert Many2many  , is possible just change the field type from Many2one to Many2many without losing any data?

If yes, what's the correct way to do it? if not, how to do it?


thanks 

Avatar
Discard

thank you so much

please i also need to convert one2many to many2many

if possible ?

i  can access database and print "qweb" from field one2many is their fields

You still need to have a o2m object to use it in m2m.

The script will be similar to move the fields to m2m. You just need to access the o2m field in loop.

Best Answer

Better to create a new field for m2m and then move the data from m2o to m2m using script.

Ex:

my_m2m_ids = fields.Many2many(......)

# Script code to move the m2o data to m2m
@api.multi
def move_m2o_to_m2m(self):
for rec in self.search([('my_m2o_field_id', '!=', False)]): # Search all the records that have value in m2o field
rec.write({'my_m2m_ids': [(6, 0, [rec.my_m2o_field_id.id])]}) # Move data from m2o to m2m

This way you can move all the data for an object from m2o to m2m field.

Avatar
Discard
Best Answer



google


Avatar
Discard
Author Best Answer

from openerp import models, fields, api,_



import openerp.addons.decimal_precision as dp

from math import *



class traceur(models.Model):

     _inherit = ['account.analytic.account']  

     traceur_ids = fields.One2many('contrat_traceur', 'contract_id', 'Traceurs')

     contrat_traceur_ids = fields.Many2many('contrat_traceur')

     

     # Script code to move the m2o data to m2m

     @api.multi

def convert_o2m(self):

        for rec in self.search([('traceur_ids', '!=', False)]):

         rec.write({'contrat_traceur_ids': [(6, 0, [rec.traceur_ids.id])]})

traceur()


**************************

    def compute_tva(self):

   ^

IndentationError: unexpected indent

Avatar
Discard

def convert_o2m(self):

This should be exactly align with the @api.multi

In python everything is indented by 1 tab (4 spaces) instead of braces.

Author

please i need to print the date of a field one2many but still they display empty content

contrat_traceur_ids = fields.One2many('contrat_traceur', 'contract_id', 'Traceurs')

in template Qweb :

<t t-foreach="o.contrat_traceur_ids" t-as="t">

<td class="text-center"><span t-field="t.name"/></td>

<td class="text-center"><span t-field="t.num_appel"/></td>

<td class="text-center"><span t-field="t.activation_tt_date"/></td>

<td class="text-center"><span t-field="t.application"/></td>

</t>

thank you