我是Odoo的新手,经常被卡住。现在,我真的束手无策。 我的目标是计算消耗的原材料。 问题是我想使用mrp.bom.line中的product_id初始化一个模型(此处为评估.raw.material)。我尝试使用“ default =”,“ .create()”,但是它不起作用。 我认为,如果我获得所有原材料的所有product_id,则可以轻松地用sql查询填充所有列。 你能帮助我吗? 还是我弄错了? 还是您有更好的主意?谢谢。对不起,我的英语不好。
class AssessmentRawMaterials(models.Model):
_name = 'assessment.raw.materials'
# get the product_id from mrp.bom.line
# which is nomenclature of each
# finished product
product_id = fields.Many2one(
string='Matières premières',
comodel_name='mrp.bom.line',
ondelete="no action",
store=True
)
# get the product unit of measure
# by calling the variable name of
# product_id
product_uom_name = fields.Char(
string=u'Unité de mesure',
related='product_id.product_id.name'
)
# compute using sql query,
# long long
# inner join
# from sale.order to mrp.bom.line
raw_material_qty = fields.Integer(
string=u'Quantité de matières premières',
default=0
)
答案 0 :(得分:0)
如果物料清单行与评估原材料之间具有一对一的相似关系,并且想要使用物料清单产品信息,请使用相关字段:
bom_line_id = fields.Many2one(
string='Matières premières',
comodel_name='mrp.bom.line',
ondelete="no action") # store not needed default True
product_id = fields.Many2one(
comodel_name='product.product',
related='bom_line_id.product_id',
store=True) # store explanation for related fields after code
在通常的many2one字段上,存储参数默认为True
。在相关字段上,您确实需要确定应该在数据库中发生什么:
store=True
将在assessment_raw_materials
表上创建一个新列,Odoo会告诉每次更改时从product_product
表中复制该值。因此,这有点多余,但有时是希望的。store=False
不会创建新列,但是Odoo总是会从product_product
表中获取值。