Odoo 9 ValueError:系统中找不到外部ID:

时间:2017-04-10 21:12:39

标签: python xml openerp odoo-9

我在这几个小时都无法理解。我正在尝试从我创建的模块中打印表单。单击打印按钮时,我一直收到以下错误。

raise ValueError('External ID not found in the system: %s' % (xmlid))
ValueError: External ID not found in the system: ch08.qweb_ds_repair_template

我的report.xml文件

<?xml version="1.0" encoding= "utf-8"?>

    <openerp>
        <data>

             <template id="qweb_ds_repair_template">
            <t t-call="report.html_container" >
                <t t-foreach ="docs" t-as="o">
                    <t t-call ="report.external_layout">
                        <div class="page" >
                            <div class="oe_structure" />
                            <h1>Repair Form</h1>
                            <h2>Test: <span t-field="o.password"/></h2>
                        </div>
                    </t>
                </t>
            </t>
        </template>

             <report id="report_ds_repair_template"
                     name="ch08.qweb_ds_repair_template"
                     model="ds.repair"
                     string="Repair Form"
                     report_type="qweb-pdf"

                     />

 </data>
    </openerp>   

我的模块文件夹名为ds_repair。不确定我的 openerp .py中是否缺少依赖项,所以这里它位于

之下
{
    'name': 'Repairs',
    'version': '1.0',
    'sequence': 200,
    'category': 'Manufacturing',
    'summary': 'Repair',
    'description': """,
The aim is to have a complete module to manage all products repairs.
====================================================================


""",
    'depends': ['base'],
    'website': '',
    'data': ['report/report.xml',
             'model_view.xml',

             ],
    'demo': [],

    'installable': True,
    'auto_install': False,

} 

5 个答案:

答案 0 :(得分:1)

您的模块文件夹名称为“ ds_repair ”,因此您应该写 name =“ds_repair.qweb_ds_repair_template”

<report id="report_ds_repair_template"
                     name="ds_repair.qweb_ds_repair_template"
                     model="ds.repair"
                     string="Repair Form"
                     report_type="qweb-pdf"

                     />

答案 1 :(得分:0)

不确定,但我认为ch08代替ds_repair导致了这个问题。 我非常确定点之前的文本是为命名空间或addon(addon文件夹)名称保留的。

<?xml version="1.0" encoding= "utf-8"?>

<openerp>
    <data>

        <report id="report_ds_repair_template"
                 name="ds_repair.qweb_ds_repair_template"
                 model="ds.repair"
                 string="Repair Form"
                 report_type="qweb-pdf"/>

         <template id="qweb_ds_repair_template">
            <t t-call="report.html_container" >
                <t t-foreach ="docs" t-as="o">
                    <t t-call ="report.external_layout">
                        <div class="page" >
                            <div class="oe_structure" />
                            <h1>Repair Form</h1>
                            <h2>Test: <span t-field="o.password"/></h2>
                        </div>
                    </t>
                </t>
            </t>
         </template>

    </data>
</openerp>

答案 2 :(得分:0)

当您想要引用另一个xml_id时,您有两种可能性。

你写道:

<template inherited="module_name.xml_id">

此方法通常在您想要引用其他模块中的ID时使用

或者你可以

<template inherited="xml_id">

在这种情况下,您希望在当前模块中引用代码编写的ID。

您的错误的来源可能是:

  1. 您没有名为ch08的模块
  2. 你有一个名为ch08的模块,但你还没有一个id&#34; qweb_ds_repair_template&#34;在模块中
  3. 但我认为在你目前的情况下,你只想参考上面的id。

    你可以写

    <report id="report_ds_repair_template"
            name="module_name.qweb_ds_repair_template"
            model="ds.repair"
            string="Repair Form"
            report_type="qweb-pdf"/>
    

    PS:当我说module_name时,它是你文件夹的名称。

答案 3 :(得分:0)

对于我的情况odoo11,在搜索了许多页面之后,只需看一下教程即可,它有效:

  

最后,通过转到“设置”‣“模块”‣“模块”‣“学院”,然后单击“升级”,重新启动Odoo并更新模块的数据(以安装模板)。

答案 4 :(得分:0)

就我而言,我试图配置一个现有的Odoo 9项目。但是,当我在 custom_folder 中克隆模块时。我将其命名为'odoo_xyz',但是在 openerp .py中将其写为'xyz'。因此,我将克隆的模块重命名为“ xyz”,重新启动Odoo 9,然后创建一个新数据库。因此,它维护了一个新的参考系统。