如何将默认值覆盖为非默认值
Posted
技术标签:
【中文标题】如何将默认值覆盖为非默认值【英文标题】:How to override a default value to a non default one 【发布时间】:2021-05-30 12:26:32 【问题描述】:我想将purchase.order
中的picking_type_id
值覆盖为非默认值。我试过这样做,但它不起作用:
_columns =
'picking_type_id': fields.many2one('stock.picking.type', 'Deliver To', help="This will determine picking type of incoming shipment", required=False, states='confirmed': [('readonly', False)], 'approved': [('readonly', False)], 'done': [('readonly', True)]),
_defaults =
'picking_type_id': False
【问题讨论】:
试试下面的链接:odoo.com/forum/help-1/… 您确定您使用的是 Odoo 12 吗?您正在使用自 Odoo 10 以来不再可用的旧 API。 【参考方案1】:默认的picking_type_id
值来自窗口动作。您可以在stock_picking_views 文件中找到所有窗口操作。
使用default
属性设置默认值,例如:
state = fields.Selection([
('draft','Draft'),
('open', 'Open'),
('in_payment', 'In Payment'),
('paid', 'Paid'),
('cancel', 'Cancelled'),
], string='Status', default='draft')
要覆盖默认值,无论它在哪里定义,您都可以重新定义default_get
方法。试试下面的代码:
class StockPicking(models.Model):
_inherit = 'stock.picking'
@api.model
def default_get(self, fields_list):
res = super(StockPicking, self).default_get(fields_list)
res['picking_type_id'] = False
return res
【讨论】:
非常感谢,实际上问题出在我的 odoo 配置上,我有一个默认值 pick_type_id 一直在填充它以上是关于如何将默认值覆盖为非默认值的主要内容,如果未能解决你的问题,请参考以下文章
CMAKE_INSTALL_PREFIX如何设置默认值,并且保留从命令行覆盖的能力?
如何覆盖 TableView.rowDelegate 的某些属性,同时保持其他属性为默认值