2016-02-06 3 views
1

Я пытаюсь создать отчет и все, казалось, прекрасно с моим кодом, за исключение я получил эту ошибку при печати отчетаOdoo сообщить об ошибке: Qweb максимальной ошибки глубина рекурсии превысила

Вот часть из сообщения об ошибке:

File "/opt/odoo8/odoo/addons/report/models/report.py", line 135, in translate_doc 
    return self.translate_doc(cr, uid, doc_id, model, lang_field, template, values, context=context) 
    File "/opt/odoo8/odoo/openerp/api.py", line 268, in wrapper 
    return old_api(self, *args, **kwargs) 
    File "/opt/odoo8/odoo/addons/report/models/report.py", line 106, in translate_doc 
    doc = self.pool[model].browse(cr, uid, doc_id, context=ctx) 
    File "/opt/odoo8/odoo/openerp/api.py", line 268, in wrapper 
    return old_api(self, *args, **kwargs) 
    File "/opt/odoo8/odoo/openerp/models.py", line 5266, in browse 
    return self._browse(Environment(cr, uid, context or {}), ids) 
QWebException: """"""""""""""""""""""""""""""maximum recursion depth exceeded" while evaluating 
"translate_doc(doc_id, doc_model, 'user_id.partner_id.lang', 'school_erp.report_printstandard')"" while evaluating 
"translate_doc(doc_id, doc_model, 'user_id.partner_id.lang', 'school_erp.report_printstandard')"" while evaluating 
"translate_doc(doc_id, doc_model, 'user_id.partner_id.lang', 'school_erp.report_printstandard')"" while evaluating 

и вот мой код:

в report.xml:

<template id="report_printstandard">  
      <t t-call="report.html_container"> 
       <t t-foreach="doc_ids" t-as="doc_id"> 
        <t t-raw="translate_doc(doc_id, doc_model, 'user_id.partner_id.lang', 'school_erp.report_printstandard')"/> 
       </t> 
      </t> 
     </template> 

и вот мой модуль:

class school_standard(osv.osv): 
    _name = 'school.standard' 
    _rec_name = "code" 
    _columns = { 
     'name':fields.char('Standard Name', size=256, required=True), 
     'code':fields.char('Standard Code', size=8, required=True), 
     'user_id':fields.many2one('res.users', 'User'),  
     'student_line':fields.one2many('school.student', 'standard_id', 'Students'), 
    } 
    def get_uid(self, cr, uid, context=None): 
     return uid 
    _defaults = { 
     'user_id': get_uid, 
    } 
school_standard() 

Что не так в моем коде?

ответ

1

Вы используете тот же ID <template id="report_printstandard"> из 'school_erp.report_printstandard'.
Вы Шоуд создать новый шаблон с различными ID:

<template id="report_printstandard_document"> 
    <t t-call="report.external_layout"> 
     <div class="page"> 
      <!-- Your Code--> 
     </div> 
    </t> 
</template> 

<template id="report_printstandard">  
    <t t-call="report.html_container"> 
     <t t-foreach="doc_ids" t-as="doc_id"> 
      <t t-raw="translate_doc(doc_id, doc_model, 'user_id.partner_id.lang', 'school_erp.report_printstandard_document')"/> 
     </t> 
    </t> 
</template> 
+0

Спасибо .. это работало: D – youta

+0

@youta Я рад, что смог помочь – Zety

1

Вы столкнулись вопрос, который является максимальной ошибкой глубина рекурсии Qweb превышена из вас проезжает неправильные арг на translate_doc метода и вы пытаясь передать один и тот же идентификатор, который имеет шаблон механизма перевода, не использовать шаблон отчета qweb.

translate_doc() работает некоторые вещи, как:

Helper используется, когда отчет должен быть переведен в конкретный Ланг

<t t-foreach="doc_ids" t-as="doc_id"> 
    <t t-raw="translate_doc(doc_id, doc_model, 'user_id.partner_id.lang', account.report_invoice_school_erp.report_printstandard_documentdocument')"/> 
</t> 

Параметры перевести функцию Doc:

1. param doc_id: ID записи для перевода

2. пары модель: модели записи, чтобы перевести

3. пары lang_field ': поля записи, содержащего Ланг

4. Шаблон пары: имени шаблона перевести в lang_field

Я надеюсь, что мой ответ может полезно для вас :)

Смежные вопросы