如何将 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 代码正常工作。例如,controllerswizardsreports目录还有.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