Skip to Content
Odoo Меню
  • Увійти
  • Спробуйте це безкоштовно
  • Додатки
    Фінанси
    • Бухоблік
    • Виставлення рахунку
    • Витрати
    • Електронні таблиці (BI)
    • Документи
    • Підпис
    Продажі
    • CRM
    • Продажі
    • POS Магазин
    • POS Ресторан
    • Підписки
    • Оренда
    Веб-сайти
    • Конструктор веб-сайту
    • Електронна комерція
    • Блог
    • Форум
    • Живий чат
    • Електронне навчання
    Ланцюг поставок
    • Склад
    • Виробництво
    • PLM
    • Купівлі
    • Технічне обслуговування
    • Якість
    Кадри
    • Співробітники
    • Рекрутинг
    • Відпустки
    • Оцінювання
    • Рекомендації
    • Автотранспорт
    Маркетинг
    • Маркетинг соцмереж
    • Email-маркетинг
    • SMS-маркетинг
    • Події
    • Автом. маркетингу
    • Опитування
    Послуги
    • Проект
    • Табелі
    • Виїзне обслуговування
    • Служба підтримки
    • Планування
    • Призначення
    Продуктивність
    • Обговорення
    • Artificial Intelligence
    • IoT
    • IP-телефонія
    • База знань
    • WhatsApp
    Сторонні модулі Odoo Studio Платформа Odoo Cloud
  • Сфери
    Роздрібна торгівля
    • Книжковий магазин
    • Магазин одягу
    • Магазин меблів
    • Продуктовий магазин
    • Магазин будівельних матеріалів
    • Магазин іграшок
    Food & Hospitality
    • Бар та паб
    • Ресторан
    • Фастфуд
    • Guest House
    • Дистриб'ютор напоїв
    • Hotel
    Нерухомість
    • Real Estate Agency
    • Архітектурна фірма
    • Будівництво
    • Property Management
    • Садівництво
    • Асоціація власників нерухомості
    Консалтинг
    • Бухгалтерська компанія
    • Партнер Odoo
    • Агенція маркетингу
    • Юридична фірма
    • Придбання Талантів
    • Аудит та сертифікація
    Виробництво
    • Textile
    • Metal
    • Меблі
    • Їжа
    • Brewery
    • Корпоративні подарунки
    Здоров'я & Фітнес
    • Спортивний клуб
    • Оптика
    • Фітнес-центр
    • Практики здоров'я
    • Аптека
    • Салон краси
    Trades
    • Ремонтник
    • IT-обладнання та Підтримка
    • Системи сонячної енергії
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Інші
    • Nonprofit Organization
    • Екологічна агенція
    • Оренда білбордів
    • Фотографія
    • Лізинг велосипедів
    • Реселлер програмного забезпечення
    Browse all Industries
  • Спільнота
    Навчання
    • Навчальний посібник
    • Документація
    • Сертифікації
    • Тренування
    • Блог
    • Подкаст
    Сприяйте Освіті
    • Програма навчання
    • Бізнес гра Scale Up!
    • Відвідайте Odoo
    Отримайте програмне забезпечення
    • Завантаження
    • Порівняйте версії
    • Релізи
    Співпрацюйте
    • Github
    • Форум
    • Події
    • Переклади
    • Стати партнером
    • Services for Partners
    • Зареєструйте вашу бухгалтерську фірму
    Отримайте послуги
    • Знайдіть партнера
    • Знайдіть бухгалтера
    • Зустріньтеся з консультантом
    • Послуги з впровадження
    • Референси клієнтів
    • Підтримка
    • Оновлення
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Отримати демо
  • Ціни
  • Допомога
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
All Posts Люди Значки
Мітки (View all)
odoo accounting v14 pos v15
Про цей форум
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
All Posts Люди Значки
Мітки (View all)
odoo accounting v14 pos v15
Про цей форум
Допомога

Creating model data with many2many field doesn't work

Підписатися

Отримуйте сповіщення про активність щодо цієї публікації

Це запитання позначене
ormmany2manycontroller
1 Відповісти
20911 Переглядів
Аватар
Tobias Wetzel

Hi,

I am trying to create a model entry in my controller, which has a many2many field. The creating works but the values I added to the many2many field are not there. What is wrong?

Model definition:

class Paper(models.Model):
_name = 'paper_submission.paper'

title = fields.Char(string='Title', required='True')
author_ids = fields.Many2many('paper_submission.author', string='Authors', relation="paper_submission_paper_author_relation")

references model:

class Author(models.Model):
_name = 'paper_submission.author'

first_name = fields.Char()
last_name = fields.Char()

Code for creating the model entry:

 orm_paper = registry.get('paper_submission.paper')

paper_info = {"title: title, author_ids": author_ids}
paper_id = orm_paper.create(cr, SUPERUSER_ID, paper_info, context=context)

where author_ids is a list of ids, like [1,2]


0
Аватар
Відмінити
Tobias Wetzel
Автор

SOLUTION: orm_paper.create({'title': title, 'author_ids': [(6, 0, author_ids)]}) using: (6, _, ids) triplet from the Odoo docs: "Values marked as _ in the list above are ignored and can be anything, generally 0 or False."

Аватар
Habib
Найкраща відповідь

You need to use tuples to write to many2many records:

In your case if the authors don't exist, and you want to create them, you would use:

orm_paper.create({'title': title, 'author_ids': [(0, 0, {'first_name': first_name, 'last_name': last_name})]

if the author does exist you would use:

orm_paper.create({'title': title, 'author_ids': [(4, author_id)]}) 


The following can be found at /openerp/models.py, and describes how to use the appropriate "triplet" 

:class:`~openerp.fields.One2many` and
:class:`~openerp.fields.Many2many` use a special "commands" format to
manipulate the set of records stored in/associated with the field.

This format is a list of triplets executed sequentially, where each triplet is a command to execute on the set of records. Not all commands apply in all situations. Possible commands are: ``(0, _, values)`` adds a new record created from the provided ``value`` dict. ``(1, id, values)`` updates an existing record of id ``id`` with the values in ``values``. Can not be used in :meth:`~.create`. ``(2, id, _)`` removes the record of id ``id`` from the set, then deletes it (from the database). Can not be used in :meth:`~.create`. ``(3, id, _)`` removes the record of id ``id`` from the set, but does not delete it. Can not be used on :class:`~openerp.fields.One2many`. Can not be used in :meth:`~.create`. ``(4, id, _)`` adds an existing record of id ``id`` to the set. Can not be used on :class:`~openerp.fields.One2many`. ``(5, _, _)`` removes all records from the set, equivalent to using the command ``3`` on every record explicitly. Can not be used on :class:`~openerp.fields.One2many`. Can not be used in :meth:`~.create`. ``(6, _, ids)`` replaces all existing records in the set by the ``ids`` list, equivalent to using the command ``5`` followed by a command ``4`` for each ``id`` in ``ids``. Can not be used on :class:`~openerp.fields.One2many`.
3
Аватар
Відмінити
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Реєстрація
Related Posts Відповіді Переглядів Дія
Get model data in a controller Вирішено
orm model controller
Аватар
Аватар
Аватар
Аватар
4
жовт. 21
40443
How to find out the table name for a many2many relation (Where is the many2many table name stored?) Вирішено
orm xmlrpc many2many
Аватар
Аватар
Аватар
Аватар
Аватар
4
жовт. 21
26777
Many2Many relationship but sorted with 'weighted' values
many2one orm many2many one2one
Аватар
0
лист. 18
8182
ODOO V16 Associate Parts to a Finished Good
many2many
Аватар
Аватар
1
лют. 24
4106
many2many write() - replaces all existing records in the set by the ids Вирішено
orm write many2many website odoo12
Аватар
Аватар
Аватар
Аватар
3
вер. 23
64434
Спільнота
  • Навчальний посібник
  • Документація
  • Форум
Open Source
  • Завантаження
  • Github
  • Runbot
  • Переклади
Послуги
  • Хостинг Odoo.sh
  • Підтримка
  • Оновлення
  • Кастомні доробки
  • Навчання
  • Знайдіть бухгалтера
  • Знайдіть партнера
  • Стати партнером
Про нас
  • Наша компанія
  • Торгові активи
  • Зв'яжіться з нами
  • Вакансії
  • Події
  • Подкаст
  • Блог
  • Клієнти
  • Юридичні документи • Конфіденційність
  • Безпека
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk Slovenščina Español (América Latina) Español Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo - це набір програм для роботи з відкритим кодом, які охоплюють всі ваші потреби компанії: CRM, електронна комерція, бухгалтерський облік, склад, точка продажу, управління проектами тощо.

Унікальна пропозиція Odoo - це одночасно дуже проста у використанні та повністю інтегрована.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now