Odoo TypeError: смешивание яблок и апельсинов в унаследованной модели

У меня есть odoo 12 с модулем «Управление контрактами — повторяющиеся», и я пишу модуль, который создает модель под названием «аренда», которая наследуется от account.analytic.account с использованием _inherit. Представление формы наследуется от contract.account_analytic_account_sale_form. Это работает очень хорошо, за исключением того, что когда я пытаюсь добавить продукты из строк счета-фактуры, я получаю сообщение об ошибке

TypeError: Mixing apples and oranges: account.analytic.account(<odoo.models.NewId object at 0x07736650>,) & pmtest.leases(<odoo.models.NewId object at 0x07736650>,)

Модель:

class leases(models.Model):
    _name = 'pmtest.leases'
    _description = 'Leases - inherit from Contracts'
    _inherit = 'account.analytic.account'
    lease

имя = поля.Char()

Вид

<record id = "pmtest_leases_form" model = "ir.ui.view">
    <field name = "name">pmtest.leases.form</field>
    <field name = "model">pmtest.leases</field>
    <field name = "inherit_id" ref = "contract.account_analytic_account_sale_form"/>
    <field name = "mode">primary</field>
    <field name = "priority" eval = "20"/>
    <field name = "arch" type = "xml">
        <xpath expr = "//field[@name='partner_id']" position = "after">
                <field name = "leasename" string = "Lease Name"/>
        </xpath>
    </field>
</record>

полная трассировка стека:

Odoo Server Error
Traceback (most recent call last):
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 654, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 312, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\pycompat.py", line 87, in reraise
    raise value
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 696, in dispatch
    result = self._call_function(**self.params)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 344, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\service\model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 337, in checked_call
    result = self.endpoint(*a, **kw)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 939, in __call__
    return self.method(*args, **kw)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 517, in response_wrap
    response = f(*args, **kw)
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\web\controllers\main.py", line 962, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "c:\program files (x86)\odoo 12.0\server\odoo\addons\web\controllers\main.py", line 954, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 749, in call_kw
    return _call_kw_multi(method, model, args, kwargs)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 736, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 5455, in onchange
    record[name] = value
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 5097, in __setitem__
    return self._fields[key].__set__(self, value)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py", line 1002, in __set__
    spec = self.modified_draft(record)
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py", line 1147, in modified_draft
    lambda rec: rec if path == 'id' else rec._mapped_cache(path) & records
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 4866, in filtered
    return self.browse([rec.id for rec in self if func(rec)])
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 4866, in <listcomp>
    return self.browse([rec.id for rec in self if func(rec)])
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py", line 1147, in <lambda>
    lambda rec: rec if path == 'id' else rec._mapped_cache(path) & records
  File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 5002, in __and__
    raise TypeError("Mixing apples and oranges: %s & %s" % (self, other))
TypeError: Mixing apples and oranges: account.analytic.account(<odoo.models.NewId object at 0x04F49BB0>,) & pmtest.leases(<odoo.models.NewId object at 0x04F49BB0>,)

Эта ошибка возникает, когда вы назначаете поле many2one запись из другой модели. например, сделать rec.product_id = some_rec.lot_id из TraceBack Я считаю, что проблема в каком-то onchage вызове метода.

Charif DZ 02.06.2019 18:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
1 425
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю проблема в атрибуте _имя.

Попробуйте удалять атрибут _имя.

Разница в том, что если вы добавите _имя, вы получите создать новую таблицу в базе данных. Если вы добавляете только атрибут _наследовать, поля, которые вы создаете будет добавлено в таблицу, называются как атрибут _inherit.

Если вы видите, ошибка говорит о том, что вы не можете сравнивать модель account.analytic.account с моделью pmtest.leases, потому что вы определяете с помощью _name, что это разные модели.

Зависит от того, что пытается сделать ОП. Его/ее вопрос звучит так, будто он/она хочет создать совершенно новую модель. За исключением этого, это хороший ответ!

CZoellner 03.06.2019 11:14

Действительно, я пытался создать новую модель. Тем не менее, это работает для расширения модели контрактов, и я могу заставить это работать. Спасибо!

Doug Mattingly 11.06.2019 04:52

Другие вопросы по теме

Похожие вопросы

Поле выбора с widget="radio" не получает требуемого эффекта, применяемого с attrs в файле XML в Odoo 12
Как удалить запись без немедленного эффекта базы данных
Параметры поля выбора в odoo
Не удается восстановить или сделать резервную копию баз данных Odoo
Как я могу исправить несоответствие адреса доставки ODOO 9 между [/shop/checkout] и [/payment] в модуле продажи веб-сайта?
Как создать и отправить почту с помощью кода Python без создания почтового шаблона в формате xml в odoo
Как добавить пользовательский фильтр/поле пользовательского поиска в представление заказа на продажу на основе поля в партнерской форме
Как я могу всегда открывать форму в режиме редактирования для конкретной модели
Как отправить шаблон электронной почты нескольким пользователям (адресам электронной почты) в Odoo 12
Переопределить атрибут «только для чтения» поля в отношении one2many