当我要创建记录时,这是我的错误。请告诉我哪里缺少点。?
File "/home/bellvantage/Documents/openerp-7.0/openerp-7/openerp/addons/bpl/bpl.py", line 394, in create
self.write(cr, uid, [id], {'name': name}, context)
File "/usr/lib/python2.7/dist-packages/psycopg2/extensions.py", line 129, in getquoted
pobjs = [adapt(o) for o in self._seq]
ProgrammingError: can't adapt type 'builtin_function_or_method'
2013-04-26 06:14:07,719 5739 INFO demo werkzeug: 127.0.0.1 - - [26/Apr/2013 06:14:07] "POST /web/dataset/call_kw HTTP/1.1" 200 -
我的代码中的相关行是这样的
def create(self, cr, uid, values, context=None):
name = 'CheckRoll No : ' + str(values['checkroll_no']) + ' & Gang No : ' + str(values['gang_no'])
self.write(cr, uid, [id], {'name': name}, context)
return True
错误来了,表明我的写入方法不正确。看似我遗漏了一些参数。 需要你的建议来实现模块 感谢..
EDITED
现在出现如下错误
File "/home/bellvantage/Documents/openerp-7.0/openerp-7/openerp/addons/bpl/bpl.py", line 395, in create
res = super('bpl.work.offer',self).create(cr,uid,values,context=context)
TypeError: must be type, not str
2013-04-26 07:58:43,452 6947 INFO demo werkzeug: 127.0.0.1 - - [26/Apr/2013 07:58:43] "POST /web/dataset/call_kw HTTP/1.1" 200 -
这里显示我在模型类中的字段
'name': fields.char('Name', size=50),
'checkroll_no': fields.integer('Checkroll No'),
'gang_no': fields.integer('Gang'),
在调试时显示值(在super.create()时间),
dict: {'selected_tea_workers_line_ids': [[5, False, False], [0, False, {'worker_emp_no': '1000', 'worker_id':
1, 'tea_line_worker_id': False, 'is_selected': False}]], 'user_id': False, 'is_confirmed': False,
'date_of_offer': '2013-04-26', 'bpl_division_id': 1, 'work_type': 'tea', 'checkroll_no': 10, 'name':
'CheckRoll No : 10 & Gang No : 100', 'selected_rubber_workers_line_ids': [[5, False, False], [0, False,
{'worker_emp_no': '1001', 'worker_id': 2, 'rubber_line_worker_id': False, 'is_selected': False}]],
'work_update_id': False, 'field_no': 15, 'selected_sundry_workers_line_ids': [], 'payment_type':
'normal_work', 'gang_no': 100, 'total_workers': 0, 'no_of_workers': 0, 'norm': 15,
'selected_other_workers_line_ids': [], 'bpl_estate_id': 1, 'select_by': 'by_name'}
现在它起作用了。谢谢AnomA
上次修改
def create(self, cr, uid, values, context=None):
name = 'CheckRoll No = ' + str(values['checkroll_no']) + ' & Gang No = ' + str(values['gang_no'])
values.update({'name': name})
return super(bpl_work_offer,self).create(cr,uid,values,context=context)
答案 0 :(得分:3)
其实你做错了。您正在尝试写入未创建的记录。此外,我认为您不需要在这种情况下使用写入。
class bpl_abc(osv.osv)
_inherit = 'bpl.work.offer'
def create(self, cr, uid, values, context=None):
name = 'CheckRoll No : ' + str(values['checkroll_no']) + ' & Gang No : ' + str(values['gang_no'])
values.update({'name': name})
res = super('bpl_abc',self).create(cr,uid,values,context=context)
return res
bpl_abc()
请记住,openerp中的create function总是返回新创建记录的id。
答案 1 :(得分:-2)
可能是因为'write'方法是内置方法
EX:
with open("a.txt","r+") as f:
f.write("sometext")
不要使用self.write,因为write是'file'对象
的内置方法