【问题标题】:How do I remove an Odoo model class without removing the entire module?如何在不删除整个模块的情况下删除 Odoo 模型类?
【发布时间】:2022-01-23 03:45:04
【问题描述】:

我有一个带有模型类的模块,我想删除它,因为它不再需要,但模块中的其他模型仍然很重要。我可以删除引用不需要的模型的所有其他文件而不会出现任何错误(安全 CSV、视图、数据文件等),但是当我最终删除对包含类本身的实际文件的引用时(我在 from . import model_name 中评论models/__init__.py),我收到以下错误:


odoo-server | Traceback (most recent call last):
odoo-server | File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 60, in __new__
odoo-server | return cls.registries[db_name]
odoo-server | File "/usr/lib/python3/dist-packages/odoo/tools/func.py", line 69, in wrapper
odoo-server | return func(self, *args, **kwargs)
odoo-server | File "/usr/lib/python3/dist-packages/odoo/tools/lru.py", line 44, in __getitem__
odoo-server | a = self.d[obj].me
odoo-server | KeyError: 'database_name'
odoo-server |
odoo-server | During handling of the above exception, another exception occurred:
odoo-server |
odoo-server | Traceback (most recent call last):
odoo-server | File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 86, in new
odoo-server | odoo.modules.load_modules(registry._db, force_demo, status, update_module)
odoo-server | File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 477, in load_modules
odoo-server | env['ir.model.data']._process_end(processed_modules)
odoo-server | File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_model.py", line 2040, in _process_end
odoo-server | record.unlink()
odoo-server | File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_model.py", line 1217, in unlink
odoo-server | not self.env[selection.field_id.model]._abstract:
odoo-server | File "/usr/lib/python3/dist-packages/odoo/api.py", line 466, in __getitem__
odoo-server | return self.registry[model_name]._browse(self, (), ())
odoo-server | File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 176, in __getitem__
odoo-server | return self.models[model_name]
odoo-server | KeyError: 'model_name'

为什么我不能只删除对包含该类的文件的引用?如何在不卸载整个模块的情况下删除模型?

【问题讨论】:

  • 你在更新你的模块吗?

标签: python module model odoo


【解决方案1】:

这是因为您的模型仍然存储在数据库中,如果您想删除它,请务必这样做:

打开 Postgres 查询工具并运行以下命令:

delete from ir_model_fields where model_id in (select id from ir_model where model = 'MODEL.NAME');
delete from ir_model_relation where model in (select id from ir_model where model = 'MODEL.NAME');
delete from ir_model where model = 'MODEL.NAME';

【讨论】:

    猜你喜欢
    • 2018-11-25
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2022-07-12
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多