我试图在创建房间时(作为产品)提供产品的库存数量,因此使用stock.change.quantity.qty使用_inherits存储使用的数量。
我的代码:
class hotel_room(osv.osv):
_name = 'hotel.room'
_inherits = {
'product.product':'product_id',
'stock.change.product.qty': 'quantity_id'
}
_description = 'Hotel Room'
_columns = {
'product_id': fields.many2one('product.product', 'Product_id', required=True, ondelete='cascade'),
'quantity_id': fields.many2one('stock.change.product.qty', 'Quantity_id', required=True, ondelete='cascade'),
'floor_id':fields.many2one('hotel.floor', 'Floor No', required=True),
'max_limit':fields.integer('Max Person Limit'),
'desc': fields.text('Description'),
'avail_status':fields.selection([('unassigned', 'Unassigned'), ('confirmed', 'Confirmed'), ('assigned', 'Assigned')], 'Room Status'),
'room_amenities':fields.many2many('hotel.room.amenities', 'temp_tab', 'room_amenities', 'rcateg_id', 'Room Amenities'),
}
_defaults = {
'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'hotel.room'),
'is_room': True,
'new_quantity': 1.00,
'avail_status':'unassigned'
}
hotel_room()
回溯:
2013-08-14 06:04:05,611 7899 INFO hms openerp.modules.loading: loading 1 modules...
2013-08-14 06:04:05,905 7899 INFO hms openerp.modules.loading: loading 55 modules...
2013-08-14 06:04:06,059 7899 INFO hms openerp.modules.module: module hms: creating or updating database tables
2013-08-14 06:04:06,126 7899 ERROR hms openerp.netsvc: Many2One relationships from non-transient Model to TransientModel are forbidden
Traceback (most recent call last):
File "/var/app/openerp/server/openerp/netsvc.py", line 292, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "/var/app/openerp/server/openerp/service/web_services.py", line 622, in dispatch
security.check(db,uid,passwd)
File "/var/app/openerp/server/openerp/service/security.py", line 40, in check
pool = pooler.get_pool(db)
File "/var/app/openerp/server/openerp/pooler.py", line 49, in get_pool
return get_db_and_pool(db_name, force_demo, status, update_module)[1]
File "/var/app/openerp/server/openerp/pooler.py", line 33, in get_db_and_pool
registry = RegistryManager.get(db_name, force_demo, status, update_module)
File "/var/app/openerp/server/openerp/modules/registry.py", line 192, in get
update_module)
File "/var/app/openerp/server/openerp/modules/registry.py", line 218, in new
openerp.modules.load_modules(registry.db, force_demo, status, update_module)
File "/var/app/openerp/server/openerp/modules/loading.py", line 341, in load_modules
processed = load_marked_modules(cr, graph, states_to_load, force, status, report, loaded_modules, update_module)
File "/var/app/openerp/server/openerp/modules/loading.py", line 256, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/var/app/openerp/server/openerp/modules/loading.py", line 165, in load_module_graph
init_module_models(cr, package.name, models)
File "/var/app/openerp/server/openerp/modules/module.py", line 374, in init_module_models
result = obj._auto_init(cr, {'module': module_name})
File "/var/app/openerp/server/openerp/osv/orm.py", line 3187, in _auto_init
self._m2o_add_foreign_key_checked(k, dest_model, f.ondelete)
File "/var/app/openerp/server/openerp/osv/orm.py", line 2885, in _m2o_add_foreign_key_checked
'Many2One relationships from non-transient Model to TransientModel are forbidden'
AssertionError: Many2One relationships from non-transient Model to TransientModel are forbidden
2013-08-14 06:04:06,135 7899 INFO hms werkzeug: 127.0.0.1 - - [14/Aug/2013 06:04:06] "POST /web/dataset/call_button HTTP/1.1" 200 -
向我提供有关此断言错误的建议
答案 0 :(得分:4)
这是合乎逻辑的,因为瞬态模型临时保存数据,瞬态表中的所有数据都经常刷新。因此,使用ref并不是一个好的解决方案。非瞬态表中的这种瞬态表。最好将关系瞬态保持为瞬态或非瞬态到非瞬态。