Odoo не находит модель

Я пишу как собственный модуль odoo с некоторой конфигурацией, которая может быть установлена ​​пользователем. Поэтому я создал res_config.py, содержащий:

# -*- coding: utf-8 -*-
from openerp import models, fields, api


class mymodule_configuration(models.TransientModel):
  _name = 'mymodule.config.settings'
  _inherit = 'res.config.settings'

  default_myfield = fields.Char(
    string='my description',
    required=True,
    help="mydescription",
    default_model='mymodule.config.settings',
  )

В качестве представления я создал views/resconfigview.xml:

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>
        <record id="view_mymodule_configuration" model="ir.ui.view">
          <field name="name">mymodule configuration</field>
          <field name="model">mymodule.config.settings</field>
          <field name="arch" type="xml">
            <form string="mymodule configuration"
                  class="oe_form_configuration">
                <sheet>
                    <div>
                        <button string="Apply"
                                type="object"
                                name="execute"
                                class="oe_highlight" />
                        or
                        <button string="Cancel"
                                type="object"
                                name="cancel"
                                class="oe_link" />
                    </div>

                    <group string="My Settings">
                        <field name="default_myfield" />
                    </group>

[..]

Когда я устанавливаю модуль, сервер реагирует на 500. В файле журнала я нахожу:

Field(s) `arch` failed against a constraint: Invalid view definition

Error details:
Konnte Modell nicht finden: mymodule.config.settings

Сообщение на английском языке: Could not find model: mymodule.config.settings. Итак, в представлении моя модель конфигурации недоступна.

Любая идея?


person schneck    schedule 09.07.2015    source источник
comment
Вы добавили import res_config в свой __init__.py?   -  person Daniel Reis    schedule 13.07.2015


Ответы (2)


Удалите _name = 'mymodule.config.settings' из вашей модели, потому что вы наследуете существующую модель, поэтому нет необходимости определять новое имя, иначе это создаст новую модель.

И тогда поля, которые вы определили в новой модели, не будут доступны в унаследованной модели.

Обновите эту строку в xml.

 <field name="model">res.config.settings</field>

Добавьте еще одну строку в представление xml после модели

<field name="priority" eval="50" />

Также удалите default_model='mymodule.config.settings',

default_myfield = fields.Char(string='my description',required=True,help="mydescription",)

Вы пропустили наследование основного представления res.config.settings

<field name="inherit_id" ref="set view id here"/>
person Emipro Technologies Pvt. Ltd.    schedule 09.07.2015
comment
Спасибо за ответ - это приводит к другому исключению: default_myfield не может быть найден. В модели я изменил аргумент default_model на res.config.settings. - person schneck; 09.07.2015
comment
Я обновил ответ. Вам необходимо перезапустить службу odoo и обновить свой модуль. - person Emipro Technologies Pvt. Ltd.; 09.07.2015
comment
Хорошо, я обновил имя поля в представлении в соответствии с вашим обновлением и перезапустил Odoo, но исключение осталось прежним. - person schneck; 09.07.2015
comment
Возможно, возникла проблема с последовательностью, см. Обновленный ответ и обновите модуль еще раз. - person Emipro Technologies Pvt. Ltd.; 09.07.2015
comment
еще одна проблема с объявлением поля, которую я нашел в вашем коде, см. У меня есть ответ на этот вопрос. изменения в структуре столбцов необходимо обновить модуль. - person Emipro Technologies Pvt. Ltd.; 09.07.2015
comment
Я очень ценю твои подсказки! К сожалению, это не решает проблему. Найдите здесь исключение: pastebin.com/Reuav90e - возможно, это поможет. - person schneck; 09.07.2015
comment
Давайте продолжим это обсуждение в чате. - person Emipro Technologies Pvt. Ltd.; 09.07.2015
comment
Смотрите, я обнаружил проблему, вы пропустили добавление ссылки на наследование в xml, найдите идентификатор базового представления и установите в xml, я дал строку xml, которую вам нужно добавить в xml. - person Emipro Technologies Pvt. Ltd.; 09.07.2015
comment
Я делаю то же самое, но получаю ту же ошибку, что default_field не существует. @schneck, если вы решили проблему, опубликуйте обновленный код. - person Usman Maqbool; 10.07.2015
comment
В этом случае вы пропустили наследование базового вида модели <field name="inherit_id" ref="set view id here"/> - person Emipro Technologies Pvt. Ltd.; 10.07.2015
comment
@UsmanMaqbool все еще пытается найти другие подходы. Будет обновлено, когда я найду решение. Эмипро: не забыл, но не помогает. - person schneck; 10.07.2015
comment
Можете ли вы сказать мне, с какой проблемой вы столкнулись в настоящее время? - person Emipro Technologies Pvt. Ltd.; 10.07.2015
comment
Я пробовал другим способом, но получил ошибку http://stackoverflow.com/questions/31335547/addition-in-general-settings-of-odoo - person Usman Maqbool; 10.07.2015

убедитесь, что вы импортировали mymodule.config.settings в свой __init__.py файл, а также запустите эту команду, чтобы сохранить файлы

./odoo-bin -u your module name

Это поможет вам решить проблему

person herbert ichama    schedule 18.07.2018