我有一个我无法理解的问题。我在模型stock.production.lot
中添加了两个新字段。这些字段是计算浮点数,并且工作完美。他们的名字是current_qty
和expected_qty
。
然后,我创建了一个瞬态模型。在这一个中,我创建了一个指向模型lot_id
的many2one字段stock.production.lot
。我添加了两个名为current_qty
和expected_qty
的浮点字段,它们与我上面提到的各个字段相关。
问题是只有current_qty
获得正确的值(另一个总是为零)。
示例:
我创造了很多。执行此操作时,计算current_qty
并计算值10.000,并计算expected_qty
,值为5.000。
现在我打开瞬态模型,current_qty
得到10.000,这是正确的,但expected_qty
得到False。为什么呢?
即使我已将其他字段添加到瞬态模型中。这个是一个计算字符,它应该显示下一个: current_qty(expected_qty),按照这个例子的值,它应该是 10.000(5.000)。但它也需要False值(它不会写current_qty
)。此外,我在compute方法中编写日志消息,以检查方法是否被调用以及它采用了哪些值。令人惊讶的是,日志中显示的current_qty
和expected_qty
的值是正确的! (10.000和5.000)。
Python代码
class ProductLotAvailable(models.TransientModel):
_name = 'product.lot.available'
@api.multi
@api.depends('current_qty', 'expected_qty')
def _compute_beautiful_qty(self):
for available_lot in self:
current_qty = str(available_lot.current_qty)
_logger.info(current_qty)
expected_qty = str(available_lot.expected_qty)
_logger.info(expected_qty)
available_lot.beautiful_qty = current_qty + '(' + expected_qty + ')'
lot_id = fields.Many2one(
comodel_name='stock.production.lot',
string='Lot',
readonly=True,
)
current_qty = fields.Float(
related='lot_id.current_qty',
string='Current lot quantity',
readonly=True,
digits=dp.get_precision('Product Unit of Measure'),
)
expected_qty = fields.Float(
related='lot_id.expected_qty',
string='Expected lot quantity',
readonly=True,
digits=dp.get_precision('Product Unit of Measure'),
)
beautiful_qty = fields.Char(
compute='_compute_beautiful_qty',
string='Current lot quantity',
readonly=True,
)
XML代码
<field name="product_lots_available" nolabel="1">
<tree create="false" delete="false" editable="bottom">
<field name="current_qty" invisible="0"/>
<field name="expected_qty" invisible="0"/>
<field name="beautiful_qty"/>
<field name="lot_id"/>
</tree>
</field>
任何人都可以帮我吗?我的代码中可能存在一个我在过去几小时内无法看到的简单错误。
答案 0 :(得分:2)
我想的唯一原因是因为它是相关字段,所以只有在保存该记录后才会放置该字段中的值。并且因为此模型是瞬态模型,因此向导正在打开,但您无法再次打开相同的记录来验证结果。
要验证它是否转到数据库并检查记录,您将获得该值。对于双重确定,只需保持这两个字段功能Store = False,因此值将始终存在。
我的代码中没有发现任何其他问题。
答案 1 :(得分:1)
我发现了问题:我安装了另一个模块,它覆盖了加载瞬态模型默认值的方法。此方法填写current_qty
,但不填写expected_qty
。与beautiful_qty
相同的问题。
因此,尽管我正在介绍我需要的值,但它们被其他模块覆盖了。