如何将 Python class 与 Odoo 上的记录表单绑定?
How bind Python class with record's form on Odoo?
我正在创建一个新视图,以便用户在模块内创建一个对象的记录,所以我在 .xml
上创建了 <record>
和一个 class [= .py
文件上的 43=] 以将字段的 <record>
与 python 变量绑定。问题是当我 运行 出现错误时:
Model not found: new.activity.type
Error context:
View `New Activity Type`
[view_id: 771, xml_id: vz_custom_activities.custom_activities_new_activity_type, model: new.activity.type, parent_id: n/a]
None" while parsing /Users/augustosansoncadini/odoo_dev/git/addons/vz_custom_activities/views/views.xml:35, near
<record id="custom_activities_new_activity_type" model="ir.ui.view">
<field name="name">New Activity Type</field>
<field name="model">new.activity.type</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
views.xml
<record id="custom_activities_new_activity_type" model="ir.ui.view">
<field name="name">New Activity Type</field>
<field name="model">new.activity.type</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
new_activity_type.py
from odoo import models, fields, api
class new_activity_type(models.Model):
_name = 'new.activity.type'
name = fields.Text('Name')
__init__.py
# -*- coding: utf-8 -*-
from . import controllers
from . import models
您已经使用相对路径导入了您的 models
目录,这没关系,但您还需要记住 models
中的 python 个模块(.py
个文件)必须使用相对路径导入到模型目录 __init__.py
文件中。这样,无论何时在 odoo 中安装您的模块,odoo 都会导入模块根目录 __init__.py
,.py
文件中的所有 models
定义都将被导入。
这不仅适用于模型目录,也适用于任何其他目录,您必须导入 .py
才能使那些 python 代码正常工作。例如,controllers
、wizards
、reports
目录还有.py
个文件,如果有的话。这按以下方式工作:每当 Python 中的包被导入时,__init.py__
文件会自动执行,因此执行过程如下:
addons root dir __init__.py
>> models dir __init__.py
>> all .py
files that are imported in that file.
在您的 models
目录中,创建 __init__.py
文件(如果不存在的话)。
models/__init__.py
from . import new_activity_type
我正在创建一个新视图,以便用户在模块内创建一个对象的记录,所以我在 .xml
上创建了 <record>
和一个 class [= .py
文件上的 43=] 以将字段的 <record>
与 python 变量绑定。问题是当我 运行 出现错误时:
Model not found: new.activity.type
Error context:
View `New Activity Type`
[view_id: 771, xml_id: vz_custom_activities.custom_activities_new_activity_type, model: new.activity.type, parent_id: n/a]
None" while parsing /Users/augustosansoncadini/odoo_dev/git/addons/vz_custom_activities/views/views.xml:35, near
<record id="custom_activities_new_activity_type" model="ir.ui.view">
<field name="name">New Activity Type</field>
<field name="model">new.activity.type</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
views.xml
<record id="custom_activities_new_activity_type" model="ir.ui.view">
<field name="name">New Activity Type</field>
<field name="model">new.activity.type</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
new_activity_type.py
from odoo import models, fields, api
class new_activity_type(models.Model):
_name = 'new.activity.type'
name = fields.Text('Name')
__init__.py
# -*- coding: utf-8 -*-
from . import controllers
from . import models
您已经使用相对路径导入了您的 models
目录,这没关系,但您还需要记住 models
中的 python 个模块(.py
个文件)必须使用相对路径导入到模型目录 __init__.py
文件中。这样,无论何时在 odoo 中安装您的模块,odoo 都会导入模块根目录 __init__.py
,.py
文件中的所有 models
定义都将被导入。
这不仅适用于模型目录,也适用于任何其他目录,您必须导入 .py
才能使那些 python 代码正常工作。例如,controllers
、wizards
、reports
目录还有.py
个文件,如果有的话。这按以下方式工作:每当 Python 中的包被导入时,__init.py__
文件会自动执行,因此执行过程如下:
addons root dir
__init__.py
>> models dir__init__.py
>> all.py
files that are imported in that file.
在您的 models
目录中,创建 __init__.py
文件(如果不存在的话)。
models/__init__.py
from . import new_activity_type