gpt4 book ai didi

odoo - 如果字段为空 odoo 12,如何引发验证错误?

转载 作者:行者123 更新时间:2023-12-04 00:16:52 25 4
gpt4 key购买 nike

我尝试做的是,如果specialist_name 为空,我必须提出验证错误。但它不起作用。我究竟做错了什么?我的python代码如下:

specialist_name = fields.Many2one(
'res.partner',domain=[('is_specialist','=',True)],string="Specialist")

@api.constrains('specialist_name')
def _onchange_value(self):
if self.specialist_name == False:
raise ValidationError(_('Only The Specialist Has The Provision To Create'))

最佳答案

specialist_name 是一个 Many2one 字段,该字段的值是一个大小为 0(无记录)或 1(单条记录)的记录集。

self.specialist_name == False 表达式将始终被评估为 False 并且永远不会执行 if 语句的主体。

空记录在 bool 上下文(如 if 或 while 语句)中被评估为 False,尝试使用:

if not self.specialist_name:

编辑:

@constrains will be triggered only if the declared fields in the decorated method are included in the create or write call. It implies that fields not present in a view will not trigger a call during record creation. An override of create is necessary to make sure a constraint will always be triggered (e.g. to test the absence of value).

如果您重写createwrite 方法,您会发现specialist_name 键不存在于值中,如果您添加专家名称到值约束将起作用。

当我们设置一个只读字段时,我们阻止用户修改它并在后台处理它的值。我们不需要警告用户,因为无法从 UI 更改该字段的值。

关于odoo - 如果字段为空 odoo 12,如何引发验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63045896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com