如何在Odoo上将Python类与记录形式绑定?

时间:2019-03-20 14:49:51

标签: python xml odoo odoo-10

我正在创建一个新视图以供用户在模块内创建对象的记录,因此我在<record>上创建了.xml,并在.py文件上创建了类python将字段的<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

1 个答案:

答案 0 :(得分:1)

您已经使用相对路径导入了models目录,这是可以的,但是您还需要记住.py内部的python模块(models文件)必须被导入到使用相对路径对目录__init__.py文件进行建模。这样,只要将模块安装在odoo中,odoo就会导入模块的根目录__init__.pymodels文件中的所有.py定义都将被导入。

这不仅适用于models目录,还适用于任何其他目录,您必须导入.py才能使这些python代码正常工作。例如,如果有controllerswizardsreports目录.py文件,则也是如此。它的工作方式如下:每当导入Python中的软件包时,__init.py__文件都会自动执行,因此执行过程如下:

  

附加程序根目录__init__.py >>模型目录__init__.py >>全部.py   该文件中导入的文件。

在您的models目录中,创建__init__.py文件(如果尚不存在)。

模型/ __ init __。py

from . import new_activity_type