我在 openerp 7 中有一个自定义模块,其中包含签入时间(日期时间)和签出时间(日期时间)字段。当我点击保存时,我想对这两个字段进行验证,以确保退房时间不少于入住时间。感谢您的任何想法。
2 回答
如上所述,使用日期时间。
在 Odoo 中,您的日期、时间和日期时间被用作格式化为的字符串
openerp.tools.DEFAULT_SERVER_DATE_FORMAT、DEFAULT_SERVER_TIME_FORMAT 和 DEFAULT_SERVER_DATETIME_FORMAT。
from datetime import datetime
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
check_in = datetime.strptime(my_object.check_in, DEFAULT_SERVER_DATETIME_FORMAT)
check_out = datetime.strptime(my_object.check_out, DEFAULT_SERVER_DATETIME_FORMAT)
Go nuts with comparisons etc.
几点注意事项:
- 我强烈建议阅读标准库中的 datetime 模块,尤其是 strftime、strptime 和 timedelta
- 请记住,您将获得 UTC 格式的日期和日期时间。表示日期和日期时间字段的类具有返回用户时区中的日期和时间戳的方法,但您通常不需要这些。看看 fields.date.context_today 和 fields.datetime.context_timestamp
我会尝试使用 datetime 模块中的 datetime 类。
导入相关的python模块
从日期时间导入日期时间
通过适当的方法检索您的记录,即
your_record = self.pool.get('your_custom_module').search(cr, uid, domain, offset=0, limit=None, order=None, context=None, count=False)
注意:您需要提供适当的域并修改/删除参数以满足您的需要
从相关字段创建日期时间对象(使用日期时间类的 strptime 方法:从字符串创建日期对象)。就像是 :
check_in = datetime.strptime(your_record[0]['check-in time'], '%Y-%m-%d') check_out = datetime.strptime(your_record[0]['check-out time'], ' %Y-%m-%d')
注意:您需要将 format('%Y-%m-%d') 调整为数据库返回的任何格式
用一个简单的表达式比较两个对象:
如果签入<签出:...否则:...
做任何其他需要做的操作。
如果没有有关您的流程的其他详细信息,很难提供更多信息。
希望这会有所帮助,干杯