自v10以来,我一直在使用Odoo,在每个自定义模块上,我都使用 init .py导入python手册中所述的models和controllers文件夹。
from . import models
from . import controllers
在v12中,不是从文件夹内部读取信息,说找不到模型,但是如果我将文件移动到根模块文件夹中并导入文件,它将起作用!
初始化 .py 根模块文件夹
from . import models
from . import controllers
初始化 .py模型文件夹
from . import mymodel
有什么想法吗?
答案 0 :(得分:1)
这与python版本有关。由于Odoo 10用户使用python 2,并且从Odoo版本11开始使用python3。
在Python 3中,包内的隐式相对导入不再可用-仅支持绝对导入和显式相对导入。此外,仅在模块级代码中允许使用星号导入(例如,从x import *导入)。因此,在Odoo中,您必须像这样导入模型。
answer
答案 1 :(得分:1)
Odoo版本12:示例addon文件夹称为addon1。通常,此Addon1位于addon文件夹中。
在addon1文件夹中: 您的init文件必须重命名为双下划线 例如
__init__.py
您按照您提到的方式导入(请注意,编码:第一行中为utf-8行)
# -*- coding: utf-8 -*-
from . import controllers
from . import models
在addon1文件夹中,有一个名为models的文件夹(如上所述)。 在models文件夹中,有您的init文件,必须将其重命名为双下划线 例如
__init__.py
在该文件中,导入您的models文件夹中的python文件(第一行包含该编码行)
# -*- coding: utf-8 -*-
from . import models
from . import mymodel
[因此您的mymodel.py文件位于您创建的文件文件夹models内
在您的models文件夹中,您需要像这样导入python文件models.py(例如mymodel.py)
# -*- coding: utf-8 -*-
from odoo import models, fields, api
以下有关odoo 12安全功能的其他信息:
odoo 12具有一个称为文件夹安全性的新安全性文件夹,其中的文件是
ir.model.acces.csv-如果要在新菜单中查看模型,则需要将其添加到安全性中
例如
access_classname_unique,addon1.addon1,model_classname,,1,1,1,1
model_classname:如果您的类名称是_name =“ mymodel.category”(用_代替),则将成为model_mymodel.category 例如
access_mymodel_category,addon1.addon1,model_classname,,1,1,1,1