2015-04-01 46 views
1

我是新的OpenERP 7编程。我创建了一个预订模块,允许客人预订多个房间。我希望能够在创建新预订时将房间状态从可用更改为预订。这种情况的解决方案似乎覆盖了对openERP的ORM方法创建编写 ORM方法。openerp 7创建方法覆盖

我完全不知道如何将它合并到我的代码中。以下是我的代码的一部分。

class reservation(osv.osv): 
    _columns = { 
      'name': fields.char('Reservation No', required=True, select=True, readonly=True), 
      'date_order':fields.datetime('Date Ordered', required=True, readonly=True), 
      'reserved_rooms': fields.one2many('hotel.reservation.line','line_id', 'Reserved Rooms'), 
      'state': fields.selection([('draft', 'Draft'),('confirmed','Confirmed'),('cancelled','Cancelled'),('done','Done')], 'State',readonly=True), 
    } 
reservation() 

_defaults = { 
     'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid,'hotel.reservation'), 
     'state': lambda *a: 'draft', 
     'date_order': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S') 
} 

使用草稿默认状态创建预留。如何和在我的代码在哪里我把和创建方法?谢谢。

回答

1

尝试以下,

class reservation(osv.osv): 
    _columns = { 
      'name': fields.char('Reservation No', required=True, select=True, readonly=True), 
      'date_order':fields.datetime('Date Ordered', required=True, readonly=True), 
      'reserved_rooms': fields.one2many('hotel.reservation.line','line_id', 'Reserved Rooms'), 
      'state': fields.selection([('draft', 'Draft'),('confirmed','Confirmed'),('cancelled','Cancelled'),('done','Done')], 'State',readonly=True), 
    } 

    _defaults = { 
     'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid,'hotel.reservation'), 
     'state': lambda *a: 'draft', 
     'date_order': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S') 
    } 

    def create(self, cr, uid, vals, context=None): 
     ###Add your code here 
     ####update status in vals 
     return super(reservation,self).create(cr, uid, vals, context=context) 

    def write(self, cr, uid, ids, vals, context=None): 
     ###Add your code here 
     ####update status in vals 
     ## you will get only those fields into the vals which are updated. 
     return super(reservation,self).write(cr, uid, ids, vals, context=context) 
+0

您好,感谢您的回答以上,但我意识到这一点。我似乎无法得到的是如何访问窗体上输入的房间字典(假设它是一个字典,因为它是一个二维字段)。一旦我知道如何做到这一点,我将能够循环使用这些值并更改房间的状态。 – 2015-04-07 06:12:32

+0

如果它是在创建方法中,那么你应该得到'vals.get('reserved_rooms',False)'它返回id列表或者False不是字典,或者在写入方法中你应该这样写, 'obj in self.browse (cr,uid,ids,context = context): obj.reserved_rooms',obj.reserved_rooms返回可浏览的对象而非ID。 – 2015-04-07 09:19:32