谢谢斑竹~~问题已经解决。通过调试进入one2many的set函数,我理解了这个方法的含义。
[quote author=mrshelly link=topic=8056.msg17702#msg17702 date=1374378529]
[(0,0, 你的订单行数据1), (0,0, 你的订单行数据2) ]
[/quote]
separater
-
订单行信息的复制 -
订单行信息的复制我现在采用copy_data的方式来做,
def logistic_order_line_create(self, cr, uid, ids, context=None):
if context is None:
context = {}
create_ids = []
for line in self.browse(cr, uid, ids, context=context):
vals = self.copy_data(cr, uid, line._id, context)
if vals:
inv_id = self.pool.get('logistic.order.line').create(cr, uid, vals, context=context)
create_ids.append(inv_id)
return create_ids
再将
new_lines = logistic_order_line_obj.logistic_order_line_create(cr,uid,lines,context)
val = {'order_line' : new_lines}
这样可以实现拷贝。但是如果我修改行上的内容,这个修改会产生如下效果:
1.新订单上没有这一行
2.link的订单上多了一行,值为修改后的内容。
这个问题如何解决?
[quote author=digitalsatori link=topic=8056.msg17674#msg17674 date=1374224613]
你将原来的订单行记录指向了新的订单了,旧订单当然就没有订单行数据了。你应该用copy的方法将订单行内容复制过来。
[/quote] -
订单行信息的复制你说得对。我这样修改了一下:
def onchange_linked_order(self, cr, uid, ids, order_id, context=None):
logistic_order_line_obj = self.pool.get('logistic.order.line')
val = {}
if order_id:
order = self.browse(cr,uid,order_id,context)
lines = [line._id for line in order.order_line]
new_lines = logistic_order_line_obj.logistic_order_line_create(cr,uid,lines,context)
val = {'order_line' : new_lines}
return {'value':val}
在logistic_order_line_create里我是用了create方法,导致required field,也就是这个
'order_id': fields.many2one('logistic.order', 'Order Reference', ondelete='cascade', required=True)
无法填。但是在创建Order的时候,实际上这个order_id还是未知的。
这个问题如何解决?如果用copy来做的话,如何能够得到新的line的id传给"order_line"?
def logistic_order_line_create(self, cr, uid, ids, context=None):
if context is None:
context = {}
create_ids = []
for line in self.browse(cr, uid, ids, context=context):
vals = self.__prepare_logistic_order_line(cr, uid, line, context)
if vals:
inv_id = self.pool.get('logistic.order.line').create(cr, uid, vals, context=context)
create_ids.append(inv_id)
return create_ids -
订单行信息的复制我想把以前建立的一个order_line的内容拷贝到正在创建的一个order_line上,拷贝动作发生在我在form的下拉框中选择了原来的order以后,我想通过on_change方法来实现:
def onchange_linked_order(self, cr, uid, ids, order_id, context=None):
logistic_order_obj = self.pool.get('logistic.order')
val = {}
if order_id:
order = logistic_order_obj.browse(cr,uid,order_id,context)
val = {'order_line' : [line._id for line in order.order_line]}
return {'value':val}
其中order_line是logistic.order上的一个字段
'order_line': fields.one2many('logistic.order.line', 'order_id', 'Order Lines'),
我这样做以后,我发现结果是在添加新的订单后,原来那张订单的行内容消失了。估计是在数据库里的映射发生了变化。我期望的行为是不影响原来的订单行。
各位大侠有没有好的办法解决这个问题? -
JS的调试问题非常感谢!我也刚刚找到这个点。
-
JS的调试问题在调试过程中我发现js代码是压缩过的,很难去调。请问一下OpenERP是在什么地方将JS文件压缩的?
-
Many2one字段的显示我定义了一个column:
'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, required=True, change_default=True, select=True, track_visibility='always')
在xml里我想显示这个字段
<field name="partner_id"/>
但是运行以后我发现并未出现想象中的下拉列表。 -
求助:模块无法卸载跟了代码后发现关键要将ir_module_module中的记录删除
牵涉到的几张表记录也要删除:
ir_model_fields,ir_model_data,ir_model -
求助:模块无法卸载我写了一个模块,安装了以后,我重新修改了py和xml,结果我发现对数据库的修改并没有生效。
我把文件夹从addon目录移走,并且在OE里delete掉这个模块。但是每次我Update 模块列表的时候老的那个模块还在。这个问题如何解决? -
是否有OpenERP的官方认证考试?能否给个地址介绍?
-
是否有OpenERP的官方认证考试?如果有,上海有没有考场?
-
创建数据库失败:OperationalError: Unable to use a closed cursor.调试发现pytz的版本过老,导致抛出异常。换用最新版本之后,问题解决。
另,OperationalError: Unable to use a closed cursor.这个错误对OpenERP来讲是一个非常General的错误,并不能说明是数据库的问题。很多地方OpenERP会抛出异常,最后它一旦捕获了该异常后就会关闭cursor,导致最后的这个错误。所以这个错误到底是什么引起的需要case by case。。。sign。。。 -
创建数据库失败:OperationalError: Unable to use a closed cursor.我用源码运行7.0还是有这个错误:
raise psycopg2.OperationalError(msg)
OperationalError: Unable to use a closed cursor.
但是我用当天的exe安装版就没有这个问题。。。
我跟了一下代码,问题出在这个地方,里面涉及到LRU,这个概念我不熟。但是我不知道怎样改。。。
translated_msg = trans._get_source(cr, uid, self._name, 'constraint', lng, msg)
各位大师有什么建议吗? -
OpenERP7.0 源码运行遇到的问题在ccdos大牛的提醒下,我看了日志,发现是几个包没有安装。安装了以后就好了。
6.1的时候,如果有依赖包未安装,console里会有错误提示。7.0依赖的新包却没有提示。这点可以做个小小的改进。
PS:这几个包有:Mock,docutils和unittest2. -
OpenERP7.0 源码运行遇到的问题各位大牛好!
我下载的7.0的最新源码(openerp-7.0-20130323-002356),搭好环境后运行,Eclipse的Console窗口里也正确显示Pydev debugger: starting, 但是我通过浏览器localhost:8069访问不了,我查看运行的服务,也没有看到OpenERP。
这是因为源码不稳定呢还是我需要做特定的配置?