OpenERP 7禁用日期控件的手动输入

OpenERP 7禁用日期控件的手动输入,openerp,openerp-7,Openerp,Openerp 7,我知道OpenERP7已经过时,不再有任何支持 但是这个问题很重要,我需要在这里问一下 我是OpenERP7的新手,我们雇佣了一名自由职业者为我们做一些工作 我们需要将报名日期限制在今天、昨天和前一天 自由职业者确实通过选择限制了它,但是如果用户手动键入日期,它仍然会接受输入 我向他提到了这个漏洞,以及它如何给我们带来问题,但他声称他需要更改js文件,这将很难实现 我相信了他的话,但我的经理想确认我没有被欺骗,因此,这个问题 那么,实现上述目标的可能性有多大?您所寻找的是绝对可能的。 您可以为此

我知道OpenERP7已经过时,不再有任何支持

但是这个问题很重要,我需要在这里问一下 我是OpenERP7的新手,我们雇佣了一名自由职业者为我们做一些工作

我们需要将报名日期限制在今天、昨天和前一天

自由职业者确实通过选择限制了它,但是如果用户手动键入日期,它仍然会接受输入

我向他提到了这个漏洞,以及它如何给我们带来问题,但他声称他需要更改js文件,这将很难实现

我相信了他的话,但我的经理想确认我没有被欺骗,因此,这个问题


那么,实现上述目标的可能性有多大?

您所寻找的是绝对可能的。 您可以为此使用onchange或_约束:

如果要动态检查条件,可以使用onchange;如果要在保存时检查条件,可以使用\u约束

示例:

    def _check_duration(self, cr, uid, ids, context=None):
    for obj_ac in self.browse(cr, uid, ids, context=context):
        if obj_ac.date_stop < obj_ac.date_start:
            return False
    return True

_constraints = [
    (_check_duration, _('Error! The duration of the academic year is invalid.'), ['date_stop']),
]

    def onchange_date(self, cr, uid, ids, date, context=None):
    if date:
        if Condition Here:
            warning = "Your text"
            return {'value':{'date': None}, 'warning':warning}
        else:
            return {}
def检查持续时间(self、cr、uid、id、context=None):
对于self.browse(cr、uid、ids、context=context)中的obj_ac:
如果obj_ac.date_停止

希望这能有所帮助。

我不认为限制日期只能通过js更改来实现。只需使用Odoo的onchange机制,抛出警告并将日期设置在此限制范围内。他声称这是行不通的。我们说的是创建/更新带有日期字段的模型记录,这应该受到限制吗?使用onchange机制对于这个需求应该没有问题。另一个解决方案是重写create和write函数,让它们检查输入的值。如果它们不符合预期,则可能会引发错误。(这仅在用户手动输入值后起检查作用)将其与onchange结合起来,您可以同时处理这两个问题(用户看到的内容和实际写入/创建的内容)。我不擅长OpenERP编程,但如果该代码能够满足我的需要,那么就足够了。这个问题的目的是确认这是可能的