2014-11-08 31 views
0

我在openerp 7中有一個自定義模塊,具有字段簽入時間(日期 - 時間)和簽出時間(日期 - 時間)。當我點擊保存時,我想對兩個字段執行驗證,以確保退房時間不低於入住時間。感謝您的任何想法。在openerp中比較日期7

回答

0

我會嘗試從日期時間模塊中使用datetime類。

  1. 導入相關Python模塊

    從日期時間日期時間進口

  2. 通過適當的方法來檢索您的記錄即

    your_record = self.pool.get( 'YOUR_CUSTOM_MODULE')。搜索(cr,uid,domain,offset = 0,limit = None,order = None,context = None,count = False)

注意:您需要提供適當的域和修改/刪除參數,以滿足你的需要

  • 創建一個從相關領域(使用DateTime類的strptime方法datetime對象:創建來自字符串的日期對象)。例如:

    check_in = datetime.strptime(your_record [0] ['check-in time'],'%Y-%m-%d') check_out = datetime.strptime(your_record [0] ['退房時間 '], '%Y-%間%d')

  • 注意:您需要適應的格式(' %Y-%間%d')到任何格式的數據庫返回

  • 用一個簡單的表達二者進行比較對象:

    如果CHECK_IN < CHECK_OUT: ... 其他: ...

  • 什麼就做什麼其他的操作都需要做。

  • 很難提供更多的信息,但沒有關於您流量的額外細節。

    希望這有助於 乾杯

    1

    如上所述,使用日期時間。

    在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. 
    

    有兩點要注意:

    1. 我強烈建議datetime模塊上讀了標準庫,特別的strftime,strptime和timedelta
    2. 記住你會得到的日期,日期時間以UTC表示。表示日期和日期時間字段的類具有返回用戶時區中日期和時間戳的方法,但通常不需要這些。看看fields.date.context_today和fields.datetime.context_timestamp