我在奥多遇到过一个20多个球场的奇怪行为。在
这是我的代码:
在模型.py公司名称:
class mrp_bom_inherit(models.Model):
_inherit = 'mrp.bom'
producten_tussenmodel = fields.One2many(comodel_name='tussenmodel_wc_producten', inverse_name='bom_id', string="producten", copy=True)
class tussenmodel_wc_producten(models.Model):
bom_id = fields.Integer()
routing_id = fields.Integer()
producten = fields.Char(string="Productnr.")
在视图.xml公司名称:
^{pr2}$输出如下:
但它应该只显示“bbb”,因为“bbb”是数据库中唯一一条在tussenmodel_wc_producten表中路由_id=32的记录,而tussenmodel_wc_producten表中的bom_id等于中的id物料需求计划. 在
我通过一个SQL查询检查了这个:
select producten
from mrp_bom as m JOIN tussenmodel_wc_producten as t ON(m.id = t.bom_id)
where t.routing_id = 32
只有“bbb”作为输出。在
我做错什么了?在
首先需要更新模型中的关系,对于One2many关系,必须将Many2one字段作为反向字段名,这样odoo引擎才能正确解释它。在
也可以用这种方式更新你的域名
^{pr2}$当用户编辑表单时,字段上的
domain
属性只控制哪些对象出现在可用对象列表中(即,可以为关系选择潜在的对象)。它不做任何比这更重要的事情,特别是它不控制哪些对象实际上在关系中。在如果对象已经在与“aaa”、“bbb”、“ccc”和“ddd”的关系中,那么设置一个域不会改变它。在
一个可能的问题是,在one2many字段上,逆参数假定指向另一个表上的many21,即关系的逆,而在上面的代码中,tussenmodel_wc_producten中的bom_id是一个整数。在
你应该重新定义为
在字段。多个("物料需求计划“,”BOM Id“)
最后一件事:tussenmodel_wc_producten没有为模型定义一个名称。这是合法的,因为基本模型将默认为类。名称如果未定义_name,但通常定义_name或_inherit。考虑到在Odoo模型处理过程中_-name有多么重要,如果没有定义它,我不希望依赖于它按预期工作。在
相关问题 更多 >
编程相关推荐