【问题标题】:@api.constrains is not working properly@api.constrains 无法正常工作
【发布时间】:2017-10-12 04:45:23
【问题描述】:

在“project.project”模型中,我编写了一个函数来验证“开始日期”和“结束日期”,为此我使用了 onchange 函数。该函数正在工作并发出警告,但正在创建记录。实际上,如果有任何错误意味着无法保存记录,因为我正在使用@api.constrains 下面是我的代码。

py.code:

@api.onchange('date','date_start')
@api.constrains('date','date_start')
def cheking_field_date(self):
    self.t1 = self.date_start 
    self.t2 = self.date
    if self.t2 == False:
        pass
    else:   
        if str(self.t1) > str(self.t2):
            raise Warning('The Deadline Date is Invalid')
        else:
            pass  

但是当我在编辑记录时,如果日期字段的任何更改都意味着一切都很好(即“开始日期”和“结束日期”中的验证问题)。当时记录没有保存。为什么这种类型的问题快来了,谁能帮帮我。

【问题讨论】:

    标签: openerp odoo-8


    【解决方案1】:

    您需要注意以下几点:

    • 无需使用@api.onchange
    • 删除不必要的变量。
    • 只写你想发出警告的条件。

    试试下面的代码。

    @api.one
    @api.constrains('date','date_start')
    def cheking_field_date(self):
        if self.date_start and self.date:
            if self.date_start > self.date:
                raise Warning('The Deadline Date is Invalid')
    

    【讨论】:

    • 感谢您的回答,但它不工作同样的问题来了。
    • 您是否比较了两个日期值?我认为根据条件,它不允许保存记录。所以可能是数据问题。
    • 我在 'project.task' 中尝试了相同的功能,但它工作正常。问题在于 'project.project' 模型。我也尝试了你的代码,但没有用
    • 这就是我提到的。数据有问题。
    • 保存记录时会触发约束。如果您想发出警告或显示任何消息,那么我建议使用 onchange() 来允许保存记录。如果引发警告,约束将不允许保存记录。
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2016-09-01
    • 2012-07-11
    • 2018-04-08
    • 2017-04-20
    • 2018-10-02
    • 2016-09-04
    • 2010-10-06
    相关资源
    最近更新 更多