2 votes

Les fichiers many2many ont-ils tous deux la même valeur ?

J'ai ce code :

Dans le fichier .py :

class newsaleorderline(models.Model):
    _inherit='sale.order.line'

    supply_tax_id = fields.Many2many('account.tax',string='Supply Taxes',domain=['|', ('active', '=', False), ('active', '=', True)])         
    labour_tax_id = fields.Many2many('account.tax',string='Labour Taxes',domain=['|', ('active', '=', False), ('active', '=', True)])

dans le fichier .xml :

<field name="supply_tax_id" widget="many2many_tags" domain="[('type_tax_use','=','sale'),('company_id','=',parent.company_id)]" attrs="{'readonly': [('qty_invoiced', '&gt;', 0)]}"/>
<field name="labour_tax_id" widget="many2many_tags" domain="[('type_tax_use','=','sale'),('company_id','=',parent.company_id)]" attrs="{'readonly': [('qty_invoiced', '&gt;', 0)]}"/>

pendant que j'essaie de changer supply_tax_id il change, mais après la sauvegarde supply_tax_id , labour_tax_id les deux sont identiques. Je ne sais pas comment c'est lié. Je veux supply_tax_id y labour_tax_id doivent avoir des valeurs différentes et les champs doivent provenir de account.tax .

Veuillez m'aider à trouver cette solution au problème. Merci à tous pour la suggestion.

3voto

CZoellner Points 6310

Odoo génère des tables relationnelles dans votre base de données. Vous pouvez donner des noms de tables par vous-même sur la définition des champs :

class MyModel(models.Model):
    _name = "my.model"

    my_m2m_field = fields.Many2Many(
        comodel_name="another.model", # required
        relation="my_model_another_model_rel", # optional
        column1="my_model_id", # optional
        column2="another_model_id", # optional
        string="Another Records" # optional
    )

Votre exemple n'utilise pas le relation dans la définition du champ, de sorte que Odoo génère un nom par lui-même. Il utilise les deux noms de modèle (table) et ajoute un "_rel" à la fin du nom :

sale_order_line_account_tax_rel

Problème ici : Vous utilisez les deux mêmes modèles sur deux champs Many2Many différents, qui se retrouveront dans une seule table relationnelle. Ainsi, en utilisant les champs, les deux champs représenteront les mêmes données dans le client.

Solution : Utilisez le paramètre relation et définir deux noms différents pour les tables de relation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X