我正在扩展 stock.picking 以修改用作 location_dest_id
的默认值。
标准定义是:
location_dest_id = fields.Many2one(¬
'stock.location', "Destination Location Zone",¬
default=lambda self: self.env['stock.picking.type'].browse(self._context.get('default_picking_type_id')).default_location_dest_id,¬
readonly=True, required=True,¬
states={'draft': [('readonly', False)]})¬
它基本上使用picking_type中定义的默认位置。
我已经扩展了模型,因此 picking_type
中有一个名为 force_destination
的新字段。我想根据该条件在 stock.picking 上设置目的地。
伪代码:
location_dest_id = fields.Many2one(¬
....
default=
if self.env['stock.picking.type'].browse(self._context.get('default_picking_type_id')).force_destination:
default=1
else:
default=lambda self: self.env['stock.picking.type'].browse(self._context.get('default_picking_type_id')).default_location_dest_id
....
最佳答案
您只需要定义一个默认函数:
location_dest_id = fields.Many2one(default="_default_location_dest_id")
@api.model
def _default_location_dest_id(self):
picking_type_id = self._context.get('default_picking_type_id')
if not picking_type_id:
return self.env['stock.location']
picking_type = self.env['stock.picking.type'].browse(picking_type_id)
if picking_type.force_destination:
# return 1 # use an Odoo default external id here
return self.env.ref('stock.stock_location_stock')
else:
return picking_type.default_location_dest_id
希望这对您有帮助。
关于Odoo 10 - 基于条件的字段默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48604822/