【问题标题】:How bind Python class with record's form on Odoo?如何将 Python 类与 Odoo 上的记录形式绑定?
【发布时间】:2019-03-20 14:49:50
【问题描述】:

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

【问题讨论】:

    标签: python xml odoo odoo-10


    【解决方案1】:

    您已经使用相对路径导入了您的models 目录,这没关系,但您还需要记住您的models 中的python 模块(.py 文件)必须在模型目录__init__.py 文件中导入使用相对路径。这样,每当您的模块安装在 odoo 中时,odoo 都会导入模块根目录 __init__.py.py 文件中的所有 models 定义都会被导入。

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

    插件根目录__init__.py >> 模型目录__init__.py >> 所有.py 在该文件中导入的文件。

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

    models/__init__.py

    from . import new_activity_type
    

    【讨论】:

    • 我做到了,但视图上显示的字段与new_activity_type.py 上声明的字段不同,而是显示models.py 上声明的字段
    • 你能分享你的__init__.py文件代码和你的视图截图吗?
    • 我看到您还导入了您的models.py 文件,该文件中是否也定义了相同的模型new.activity.type,或者其他什么?
    • 我刚刚添加了我的 new_activity_type .py 文件,所有其他的东西都是自动添加的
    猜你喜欢
    • 1970-01-01
    • 2017-06-25
    • 2021-07-20
    • 2015-05-22
    • 2021-04-27
    • 2021-07-06
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多