Как связать класс Python с формой записи на Odoo? - PullRequest
0 голосов
/ 20 марта 2019

Я создаю новое представление для пользователя, создающего запись объекта внутри модуля, поэтому я создал файл <record> в .xml и класс python в .py для привязки полей '<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. Пй

# -*- coding: utf-8 -*-

from . import controllers
from . import models

1 Ответ

1 голос
/ 20 марта 2019

Вы импортировали каталог models с относительным путем, что нормально, но вы также должны помнить, что модули python (.py файлы) внутри вашего models должны быть импортированы в файл каталога моделей __init__.pyиспользуя относительный путь.Таким образом, всякий раз, когда ваш модуль установлен в odoo, odoo импортирует корневой каталог модулей __init__.py, все определения models в файлах .py будут импортированы.

Это не только дляКаталог моделей, но также и любые другие каталоги, вы должны импортировать .py, чтобы заставить эти коды Python работать.Например, controllers, wizards, reports каталог .py файлы также, если они есть.Это работает следующим образом: всякий раз, когда пакет в Python импортируется, файлы __init.py__ выполняются автоматически, поэтому выполнение происходит следующим образом:

addons root dir __init__.py >> models dir __init__.py >> все .py файлы, импортированные в этот файл.

В вашем каталоге models создайте файл __init__.py, если он еще не существует.

моделей / __ init __. Py

from . import new_activity_type
...