在系统中找不到外部ID:training.training\u odoo\u菜单

2024-05-21 00:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在接受培训,我得到了创建一些自定义模块的任务,当代码仍然像这样时,它工作得很好

models.py

class Kursus(models.Model):
    _name = 'training.kursus'
     
    name = fields.Char(string="Judul", required=True)
    description = fields.Text()

class Sesi(models.Model):
    _name = 'training.sesi'
     
    name = fields.Char(required=True)
    start_date = fields.Date()
    duration = fields.Float(digits=(6, 2), help="Durasi Hari")
    seats = fields.Integer(string="Jumlah Kursi")
    instructor_id = fields.Many2one('res.partner', string="Instruktur")

view.xml如下所示:

<odoo>
    <data>
    <!-- ### Membuat Tampilan Tree/List Sesi ### -->
     
    <record model="ir.ui.view" id="sesi_tree_view">
        <field name="name">training.sesi.tree</field>
        <field name="model">training.sesi</field>
        <field name="arch" type="xml">
            <tree string="Sesi List">
                <field name="name"/>
                <field name="start_date"/>
                <field name="duration"/>
                <field name="seats"/>
                <field name="instructor_id"/>      
            </tree>
        </field>
    </record>
     
     
    <!-- ### Membuat Tampilan Form Sesi ### -->
         
    <record model="ir.ui.view" id="sesi_form_view">
        <field name="name">training.sesi.form</field>
        <field name="model">training.sesi</field>
        <field name="arch" type="xml">
            <form string="Sesi Form">
                <sheet>
                    <group>
                        <field name="name"/>
                        <field name="start_date"/>
                        <field name="duration"/>
                        <field name="seats"/>
                        <field name="instructor_id"/>
                    </group>
                </sheet>
            </form>
        </field>
    </record>
     
     
    <!-- ### Membuat Action/Event Object Sesi ### -->
     
    <record model="ir.actions.act_window" id="sesi_list_action">
        <field name="name">Sesi</field>
        <field name="res_model">training.sesi</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
    </record>
     
     
    <!-- ### Membuat Sub Menu Sesi ### -->
     
    <menuitem id="sesi_menu" name="Sesi" parent="training_odoo_menu" action="sesi_list_action"/>
    
    </data>
    </odoo>

但是当我把models.py更新成这样时,就像我下面的代码一样,它得到了一个错误,错误在这个问题的最后

    class Kursus(models.Model):
        _name = 'training.kursus'
     
        name = fields.Char(string="Judul", required=True)
        description = fields.Text()
        session_ids = fields.One2many('training.sesi', 'course_id', string="Sesi")
    
    class Sesi(models.Model):
        _name = 'training.sesi'
         
        name = fields.Char(required=True)
        start_date = fields.Date()
        duration = fields.Float(digits=(6, 2), help="Durasi Hari")
        seats = fields.Integer(string="Jumlah Kursi")
        instructor_id = fields.Many2one('res.partner', string="Instruktur")
        course_id = fields.Many2one('training.kursus', ondelete='cascade', string="Kursus", required=True)

and the view.xml like this

<record model="ir.ui.view" id="kursus_form_view">
    <field name="name">training.kursus.form</field>
    <field name="model">training.kursus</field>
    <field name="arch" type="xml">
        <form string="Kursus Form">
            <sheet>
                <group>
                    <field name="name"/>
                </group>
                <notebook>
                    <page string="Keterangan">
                        <field name="description"/>
                    </page>
                    <page string="Sesi">
                        <field name="session_ids">
                            <tree string="Daftar Sesi">
                                <field name="name"/>
                                <field name="instructor_id"/>
                            </tree>
                            <form>
                                <group string="Informasi">
                                    <field name="name"/>
                                    <field name="instructor_id"/>
                                </group>
                                <group string="Jadwal">
                                    <field name="start_date"/>
                                    <field name="duration"/>
                                    <field name="seats"/>
                                </group>
                            </form>
                        </field>
                    </page>
                </notebook>
            </sheet>
        </form>
    </field>
</record>
 
 
 
 
<!-- ### Membuat Tampilan Tree/List Sesi ### -->
 
<record model="ir.ui.view" id="sesi_tree_view">
    <field name="name">training.sesi.tree</field>
    <field name="model">training.sesi</field>
    <field name="arch" type="xml">
        <tree string="Sesi List">
            <field name="name"/>
            <field name="course_id"/>
            <field name="start_date"/>
            <field name="duration"/>
            <field name="seats"/>
            <field name="instructor_id"/>      
        </tree>
    </field>
</record>
 
 
<!-- ### Membuat Tampilan Form Sesi ### -->
     
<record model="ir.ui.view" id="sesi_form_view">
    <field name="name">training.sesi.form</field>
    <field name="model">training.sesi</field>
    <field name="arch" type="xml">
        <form string="Sesi Form">
            <sheet>
                <group>
                    <group string="Informasi">
                        <field name="course_id"/>
                        <field name="name"/>
                        <field name="instructor_id"/>
                    </group>
                    <group string="Jadwal">
                        <field name="start_date"/>
                        <field name="duration"/>
                        <field name="seats"/>
                    </group>
                </group>
            </sheet>
        </form>
    </field>
</record>

 
<!-- ### Membuat Action/Event Object Sesi ### -->
 
<record model="ir.actions.act_window" id="sesi_list_action">
    <field name="name">Sesi</field>
    <field name="res_model">training.sesi</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
</record>
 
 
<!-- ### Membuat Sub Menu Sesi ### -->
 
<menuitem id="sesi_menu" name="Sesi" parent="training_odoo_menu" action="sesi_list_action"/>

  </data>
</odoo>

我在升级odoo中的模块时遇到此错误 错误:

Odoo Server Error

Traceback (most recent call last):
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/cache.py", line 88, in lookup
    r = d[key]
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/func.py", line 69, in wrapper
    return func(self, *args, **kwargs)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/lru.py", line 44, in __getitem__
    a = self.d[obj].me
KeyError: ('ir.model.data', <function IrModelData.xmlid_lookup at 0x7fec8f847d90>, 'training.training_odoo_menu')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 758, in parse
    self._tags[rec.tag](rec, de, mode=mode)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 455, in _tag_menuitem
    menu_parent_id = self.id_get(rec.get('parent',''))
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 741, in id_get
    res = self.model_id_get(id_str, raise_if_not_found)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 747, in model_id_get
    return self.env['ir.model.data'].xmlid_to_res_model_res_id(id_str, raise_if_not_found=raise_if_not_found)
  File "/home/fauz2n/odoo/addons/ORIGINAL12/base/models/ir_model.py", line 1404, in xmlid_to_res_model_res_id
    return self.xmlid_lookup(xmlid)[1:3]
  File "<decorator-gen-25>", line 2, in xmlid_lookup
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/cache.py", line 93, in lookup
    value = d[key] = self.method(*args, **kwargs)
  File "/home/fauz2n/odoo/addons/ORIGINAL12/base/models/ir_model.py", line 1393, in xmlid_lookup
    raise ValueError('External ID not found in the system: %s' % xmlid)
ValueError: External ID not found in the system: training.training_odoo_menu

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fauz2n/odoo/odoo-12/odoo/http.py", line 656, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/fauz2n/odoo/odoo-12/odoo/http.py", line 314, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/pycompat.py", line 87, in reraise
    raise value
  File "/home/fauz2n/odoo/odoo-12/odoo/http.py", line 698, in dispatch
    result = self._call_function(**self.params)
  File "/home/fauz2n/odoo/odoo-12/odoo/http.py", line 346, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/home/fauz2n/odoo/odoo-12/odoo/service/model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "/home/fauz2n/odoo/odoo-12/odoo/http.py", line 339, in checked_call
    result = self.endpoint(*a, **kw)
  File "/home/fauz2n/odoo/odoo-12/odoo/http.py", line 941, in __call__
    return self.method(*args, **kw)
  File "/home/fauz2n/odoo/odoo-12/odoo/http.py", line 519, in response_wrap
    response = f(*args, **kw)
  File "/home/fauz2n/odoo/addons/ORIGINAL12/web/controllers/main.py", line 966, in call_button
    action = self._call_kw(model, method, args, {})
  File "/home/fauz2n/odoo/addons/ORIGINAL12/web/controllers/main.py", line 954, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/fauz2n/odoo/odoo-12/odoo/api.py", line 759, in call_kw
    return _call_kw_multi(method, model, args, kwargs)
  File "/home/fauz2n/odoo/odoo-12/odoo/api.py", line 746, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-67>", line 2, in button_immediate_upgrade
  File "/home/fauz2n/odoo/addons/ORIGINAL12/base/models/ir_module.py", line 74, in check_and_log
    return method(self, *args, **kwargs)
  File "/home/fauz2n/odoo/addons/ORIGINAL12/base/models/ir_module.py", line 622, in button_immediate_upgrade
    return self._button_immediate_function(type(self).button_upgrade)
  File "/home/fauz2n/odoo/addons/ORIGINAL12/base/models/ir_module.py", line 561, in _button_immediate_function
    modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "/home/fauz2n/odoo/odoo-12/odoo/modules/registry.py", line 86, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/home/fauz2n/odoo/odoo-12/odoo/modules/loading.py", line 417, in load_modules
    force, status, report, loaded_modules, update_module, models_to_check)
  File "/home/fauz2n/odoo/odoo-12/odoo/modules/loading.py", line 313, in load_marked_modules
    perform_checks=perform_checks, models_to_check=models_to_check
  File "/home/fauz2n/odoo/odoo-12/odoo/modules/loading.py", line 222, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package, report=report)
  File "/home/fauz2n/odoo/odoo-12/odoo/modules/loading.py", line 68, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind, report)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 802, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 865, in convert_xml_import
    obj.parse(doc.getroot(), mode=mode)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 755, in parse
    self.parse(rec, mode)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 764, in parse
    exc_info[2]
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/pycompat.py", line 86, in reraise
    raise value.with_traceback(tb)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 758, in parse
    self._tags[rec.tag](rec, de, mode=mode)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 455, in _tag_menuitem
    menu_parent_id = self.id_get(rec.get('parent',''))
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 741, in id_get
    res = self.model_id_get(id_str, raise_if_not_found)
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/convert.py", line 747, in model_id_get
    return self.env['ir.model.data'].xmlid_to_res_model_res_id(id_str, raise_if_not_found=raise_if_not_found)
  File "/home/fauz2n/odoo/addons/ORIGINAL12/base/models/ir_model.py", line 1404, in xmlid_to_res_model_res_id
    return self.xmlid_lookup(xmlid)[1:3]
  File "<decorator-gen-25>", line 2, in xmlid_lookup
  File "/home/fauz2n/odoo/odoo-12/odoo/tools/cache.py", line 93, in lookup
    value = d[key] = self.method(*args, **kwargs)
  File "/home/fauz2n/odoo/addons/ORIGINAL12/base/models/ir_model.py", line 1393, in xmlid_lookup
    raise ValueError('External ID not found in the system: %s' % xmlid)
odoo.tools.convert.ParseError: "External ID not found in the system: training.training_odoo_menu" while parsing /home/fauz2n/odoo/addons/NDT/training/views/views.xml:159, near
<menuitem id="sesi_menu" name="Sesi" parent="training_odoo_menu" action="sesi_list_action"/>

有人能帮我吗?如果有人有同样的问题,你能分享一下解决方案吗


Tags: nameinpyodooselfidfieldhome
1条回答
网友
1楼 · 发布于 2024-05-21 00:23:16

在代码中有菜单项:

<menuitem id="sesi_menu" name="Sesi" parent="training_odoo_menu" action="sesi_list_action"/>

它具有属性parent="training_odoo_menu",但是,我在视图中看不到父菜单项

如果希望此菜单项成为菜单根,则需要删除父属性。如果这在另一个模块中存在,请确保在清单中首先处理该文件

如果你需要澄清,请告诉我

谢谢

相关问题 更多 >