如何将默认值覆盖为非默认值

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如何设置默认值,并且保留从命令行覆盖的能力?

如何在 C# 中覆盖默认值(T)? [复制]

如何覆盖 TableView.rowDelegate 的某些属性,同时保持其他属性为默认值

如何确保 Linq to Sql 不会覆盖或违反不可为空的 DB 默认值?

Vuetify 覆盖默认道具值