RuntimeError:在运行openerp时调用Python对象时超出了最大递归深度
请帮我纠正错误!我试图更新odoo openerp模块。在控制器文件夹main.py中,结构如下所示。我得到了RuntimeError错误:调用Python对象时超过了最大递归深度 :RuntimeError:在运行openerp时调用Python对象时超出了最大递归深度,python,openerp-8,Python,Openerp 8,请帮我纠正错误!我试图更新odoo openerp模块。在控制器文件夹main.py中,结构如下所示。我得到了RuntimeError错误:调用Python对象时超过了最大递归深度 : @http.route(['/survey/submit/'], type='http',methods=['POST'],auth='public',website=True) def提交(自我、调查、**发布): _logger.debug('传入数据:%s',post) page_id=int(post['
@http.route(['/survey/submit/'],
type='http',methods=['POST'],auth='public',website=True)
def提交(自我、调查、**发布):
_logger.debug('传入数据:%s',post)
page_id=int(post['page_id']))
#cr,uid,context=request.cr,request.uid,request.context
survey_obj=request.env['survey.survey']
questions\u obj=request.env['survey.question']
#问题id=问题对象搜索(cr,uid,[('page\u id','=',page\u id)],上下文=上下文)
#问题=问题对象浏览(cr、uid、问题ID、上下文=上下文)
questions=questions\u obj.sudo().search([('page\u id','=',page\u id)])
#答案验证
错误={}
有关问题:
answer_tag=“%s_%s_%s”%”(survey.id,page_id,question.id)
#错误.更新(问题\对象.验证\问题(cr,uid,问题,帖子,答案\标签,上下文=上下文))
错误。更新(问题\对象。验证\问题(问题、帖子、答案\标签))
ret={}
如果(len(errors)!=0):
#将错误消息返回到网页
ret['errors']=错误
其他:
#将答案存储到数据库中
user\u input\u obj=request.env['survey.user\u input']
user\u input\u line\u obj=request.env['survey.user\u input\u line']
尝试:
user_input_id=user_input_obj.sudo().search([('token','=',post['token']))][0]
KeyError除外:#无效令牌
返回请求.website.render(“website.403”)
有关问题:
answer_tag=“%s_%s_%s”%”(survey.id,page_id,question.id)
用户输入行对象保存行(用户输入id、问题、帖子、答案标签)
user\u input=request.env['survey.user\u input'].搜索([]
返回=发布['button\u submit']=='previous'
下一页,上一页=调查对象。下一页(用户输入,页面id,返回=返回)
VAL={'last_displayed_page_id':page_id}
如果“下一页”为“无”且未返回:
更新({'state':'done'})
其他:
更新({'state':'skip'})
用户输入对象写入(用户输入id,VAL)
ret['redirect']='/survey/fill/%s/%s%.(survey.id,post['token']))
如果返回:
ret['redirect']+='/prev'
返回json.dumps(ret)
将任何模块从旧API迁移到新API时,可能会发生这种情况。您应该尝试使用文档。希望能有所帮助你能发布追踪的最后几行吗?
@http.route(['/survey/submit/<model("survey.survey"):survey>'],
type='http', methods=['POST'], auth='public', website=True)
def submit(self, survey, **post):
_logger.debug('Incoming data: %s', post)
page_id = int(post['page_id'])
# cr, uid, context = request.cr, request.uid, request.context
survey_obj = request.env['survey.survey']
questions_obj = request.env['survey.question']
# questions_ids = questions_obj.search(cr, uid, [('page_id', '=', page_id)], context=context)
# questions = questions_obj.browse(cr, uid, questions_ids, context=context)
questions = questions_obj.sudo().search([('page_id', '=', page_id)])
# Answer validation
errors = {}
for question in questions:
answer_tag = "%s_%s_%s" % (survey.id, page_id, question.id)
# errors.update(questions_obj.validate_question(cr, uid, question, post, answer_tag, context=context))
errors.update(questions_obj.validate_question(question, post, answer_tag))
ret = {}
if (len(errors) != 0):
# Return errors messages to webpage
ret['errors'] = errors
else:
# Store answers into database
user_input_obj = request.env['survey.user_input']
user_input_line_obj = request.env['survey.user_input_line']
try:
user_input_id = user_input_obj.sudo().search([('token', '=', post['token'])])[0]
except KeyError: # Invalid token
return request.website.render("website.403")
for question in questions:
answer_tag = "%s_%s_%s" % (survey.id, page_id, question.id)
user_input_line_obj.save_lines(user_input_id, question, post, answer_tag)
user_input = request.env['survey.user_input'].search([])
go_back = post['button_submit'] == 'previous'
next_page, _, last = survey_obj.next_page(user_input, page_id, go_back=go_back)
vals = {'last_displayed_page_id': page_id}
if next_page is None and not go_back:
vals.update({'state': 'done'})
else:
vals.update({'state': 'skip'})
user_input_obj.write(user_input_id, vals)
ret['redirect'] = '/survey/fill/%s/%s' % (survey.id, post['token'])
if go_back:
ret['redirect'] += '/prev'
return json.dumps(ret)