我有这段代码:
在.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)])
<。>在.xml文件中:
<field name="supply_tax_id" widget="many2many_tags" domain="[('type_tax_use','=','sale'),('company_id','=',parent.company_id)]" attrs="{'readonly': [('qty_invoiced', '>', 0)]}"/>
<field name="labour_tax_id" widget="many2many_tags" domain="[('type_tax_use','=','sale'),('company_id','=',parent.company_id)]" attrs="{'readonly': [('qty_invoiced', '>', 0)]}"/>
当我尝试更改supply_tax_id
时,它会发生变化,但保存supply_tax_id
后,labour_tax_id
两者都相同。我不知道它是如何相互联系的。我希望supply_tax_id
和labour_tax_id
应该是不同的值,字段应来自account.tax
。
请帮助我找到问题的解决方案。谢谢大家的建议。
答案 0 :(得分:3)
Odoo正在您的数据库中生成关系表。您可以在字段定义中自行提供表名:
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
)
您的示例并未在字段定义中使用relation
参数,因此Odoo会自行生成名称。它为它使用了两个模型(表)名称,并添加了一个&#34; _rel&#34;在名称的末尾:
sale_order_line_account_tax_rel
问题在于:您在两个不同的Many2Many字段上使用相同的两个模型,这些字段最终会出现在一个关系表中。因此,在使用这些字段时,这两个字段将代表客户端中的相同数据。
解决方案:使用参数relation
并为关系表定义两个不同的名称。