|
1.最近一次使用many2many 重新定义中间表的时候出现bug
在一个py里面定义中间表(中间表需要添加字段用在界面上显示)
然后在在另一张表上定义many2many]字段,这个字段对应的中间表 代码如下:
class shop_product_rel(osv.osv):
_name = 'shop.product.rel'
_columns = {
'product_tmpl_id': fields.many2one('product.template', string=u'产品', required=True),
'shop_id': fields.many2one('shop', string='商城', required=True),
'display_name': fields.char(u'产品名字'),
}
class product_template(osv.osv):
_inherit = 'product.template'
_columns = {
'shop_ids': fields.many2many('shop', "shop_product_rel", 'product_tmpl_id', 'shop_id', string='上架商城'),
}
单独看每部分都没有问题
然而在显示中间表的时候却 报 错了 说是中间表 shop_product_rel .id不存在
在翻看数据库中发现这个表的id字段确实是没有的 . 不过中间表中其他又odoo自动生成的字段却是存在的
(create_date write_date等 唯独没有id )
另外 中间表的 两个关联字段 的string的内容却是 也 为空了( 推测是定义 many2many字段时 覆盖了原中间表的数据 并把id字段删除 )
但是调整 many2many字段的定义 和中间表的定义却是没有效果.
2会这么使用是因为以前成功过,
uses 表定义了一个many2many的字段 ,这个字段指向的也是user表 这个时候定义中间表却没有出现这个问题
( 不知道是不是many2many'关联的表的不同引起的这个问题)
百思不得其解,有待进一步探究
最后想了个暂时解决这个问题的办法, 先定义中间表 重启 升级 然后定义many2many字段 然重启升级
比较麻烦,暂时解决问题.
|
|