Перейти к содержимому
Odoo Меню
  • Войти
  • Попробовать бесплатно
  • Модули
    Финансы
    • Бухгалтерия
    • Выставление счетов
    • Расходы
    • Таблицы
    • Документооборот
    • Подпись
    Продажи
    • CRM
    • Продажи
    • POS Магазин
    • POS Ресторан
    • Подписки
    • Аренда
    Вебсайты
    • Конструктор вебсайтов
    • eCommerce
    • Блог
    • Форум
    • Онлайн-чат
    • Электронное обучение
    Логистика
    • Склад
    • Производство
    • PLM
    • Закупки
    • Обслуживание
    • Качество
    Отдел кадров
    • Сотрудники
    • Подбор персонала
    • Отпуска
    • Оценка персонала
    • Реферальная программа
    • Автопарк
    Маркетинг
    • SMM
    • E-mail рассылки
    • СМС рассылки
    • Мероприятия
    • Автоматизация маркетинга
    • Опросы
    Услуги
    • Проекты
    • Табели
    • Выездной сервис
    • Поддержка
    • Планирование
    • Встречи
    Продуктивность
    • Обсуждения
    • Согласование
    • IoT
    • VoIP-телефония
    • Knowledge
    • WhatsApp
    Сторонние приложения Модуль Студия Odoo Платформа Odoo Cloud
  • Индустрии
    Розничная торговля
    • Книжный магазин
    • Магазин одежды
    • Мебельный магазин
    • Продуктовый магазин
    • Строительный магазин
    • Магазин игрушек
    Гостинично-ресторанный бизнес
    • Бар и паб
    • Ресторан
    • Фастфуд
    • Гостевой дом
    • Дистрибьютор напитков
    • Отель
    Недвижимость
    • Агентство недвижимости
    • Архитектурное бюро
    • Строительство
    • Управление недвижимостью
    • Ландшафтный дизайн
    • Товарищество собственников жилья
    Консалтинг
    • Бухгалтерская фирма
    • Партнер Odoo
    • Маркетинговое агентство
    • Юридическая фирма
    • Подбор персонала
    • Аудиторское бюро
    Производство
    • Текстиль
    • Металл
    • Мебель
    • Продукты питания
    • Пивоварня
    • Корпоративные сувениры
    Здоровье и фитнес
    • Спортивный комплекс
    • Магазин оптики
    • Фитнес-клуб
    • Велнес-центр
    • Аптека
    • Салон красоты
    Услуги
    • Специалист по бытовым услугам
    • Продажа и обслуживание IT-оборудования
    • Солнечные энергосистемы
    • Производство обуви
    • Клининг
    • Системы ОВКВ
    Прочее
    • Некоммерческая организация
    • Консалтинг в сфере устойчивого развития
    • Аренда рекламных щитов
    • Бизнес по фотосъемке
    • Прокат велосипедов
    • Реселлер программного обеспечения
    Все индустрии
  • Community
    Обучение
    • Видео уроки
    • Документация
    • Сертификация
    • Тренинг
    • Блог
    • Подкаст
    Образование и развитие
    • Образовательная программа
    • Деловая игра Scale Up!
    • Экскурсия в офис Odoo
    ПО
    • Скачать
    • Сравнить версии
    • Релизы
    Сотрудничество
    • Github
    • Форум
    • Мероприятия
    • Перевод
    • Стать партнером
    • Услуги для партнеров
    • Зарегистрировать бухгалтерскую фирму
    Услуги
    • Найти партнера
    • Найти бухгалтера
    • Встреча с экспертом
    • Услуги по внедрению
    • Отзывы клиентов
    • Поддержка
    • Обновления
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Заказать демонстрацию
  • Цены
  • Поддержка

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Бухгалтерия
  • Склад
  • PoS
  • Проекты
  • MRP
All apps
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Помощь

Odoo 10 : Domain and filtering for related fields one2many.

Подписаться

Получайте уведомления о появлении активности в этом посте

Этот вопрос был отмечен
viewsfieldsrelated_fieldsodoo10odoo10.0
2 Ответы
14721 Представления
Аватар
Zied Haffoudhi

I have three table :

- product.

- package.

- product_package.


The product_package table have 2 fields which are related to the product and package as it mentionned bellow :

product_id = fields.Many2one('tjara.product', ondelete='cascade', string="Produit", index=True)
package_id = fields.Many2one('tjara.package', ondelete='cascade', string="Emballage", index=True)
_sql_constraints = [
('ligne_unique', 'unique (product_id, package_id)', '%(package_id)d Package is already exists for this product...!')
]


I added the _sql_contraints to avoid the duplicate fields. Because it can be only an unique relation between the product and a package.

And this is what I have in the product model :

product_package_ids = fields.One2many('tjara.product_package', 'product_id', string='Package')

And this is how to add a package from the product view :

                                <page string="Package">
                                    <label for="product_package_ids" string="Emballage"/>
                                    <field name="product_package_ids">
                                        <tree>
                                            <field name="package_id"/>
                                            <field name="price"/>
                                        </tree>
                                        <form>
                                             <field name="package_id"/>
                                            <field name="price"/>
                                        </form>
                                    </field>
                                </page>


This works fine for me. There is only one thing I want to enhance. When the user select an existing package for the product there is no error triggered. The error popped up only when you click "save the product".

I want either to display only the unexisting packages in the select field package_id. Or to pop up an error when the user try to add an existing package for the product.

 

0
Аватар
Отменить
Аватар
Denis Baranov
Лучший ответ

You can't achieve it by mere xml domain for 'package_id' or 'product_package_ids' since (1) in the latter there is no reference to a product. (2) when you create a product, it doesn't exist yet.

However, you may add the onchange for 'package_id' (in the method of tjara.product_package) to check uniq:


from odoo import exceptions
@api.multi
@api.onchange("package_id")
def onchange_package_id(self):
  for object in self: 
  if object.product_id:
    existing_ids = self.env["tjara.product_package"].search([('product_id','=',object.product_id.id)], limit=1)
    if len(existing_ids) > 0:
      raise exceptions.Warning(_('Package is already exists for this product...!'))
1
Аватар
Отменить
Zied Haffoudhi
Автор

Thanks a lot IT Libertas,

I just replaced the 'object.product_id' by the product's name and I included a search for the package_id also. So I get the following and it's working well :

@api.onchange('package_id')

def onchange_product_package(self):

for object in self:

if object.product_id:

existing_ids = self.env["tjara.product_package"].search([('package_id', '=', object.package_id.id), ('product_id.name', '=', object.product_id.name)], limit=1)

if len(existing_ids) > 0:

raise exceptions.Warning(('Package is already exists for this product...!'))

Аватар
Bejaoui Souheil
Лучший ответ

Hi,

SQL constraints are checked  when odoo send your request to database. In your case when you click the save button.

Use on_change to display alert message when the user change some values (more details).

@api.onchange('package_id',' product_id')
def onchange_product_package(self):
     if self.search([('package_id',='',self.package_id.id),('product_id_id',='',self.package_id.id)]:
         return {'warning': {'title': _('Warning'), 'message': _('your message.')}}

PS: Odoo have already product class and package classes. I don't think, it is a good idea to create new classes and not inherit the native ones.

Best regards.

1
Аватар
Отменить
Zied Haffoudhi
Автор

Thanks a lot Souheil :)

Не оставайтесь в стороне – присоединяйтесь к обсуждению!

Создайте аккаунт сегодня, чтобы получить доступ к эксклюзивным функциям и стать частью нашего замечательного сообщества!

Регистрация
Похожие посты Ответы Просмотры Активность
Is there an option or method to auto select the value in a field when you click on it in edit mode?
views fields odoo10
Аватар
Аватар
1
мар. 19
5163
Odoo 10 - Inherited template field appears depends upon position Решено
views fields inherit odoo10
Аватар
Аватар
2
мар. 18
5431
[CLOSED] I'm getting a validation error "Some fields are not set" set when using dynamic attributes. Решено
attrs views fields form_view odoo10
Аватар
Аватар
Аватар
8
дек. 22
6558
Odoo 10 : Related fields and inheritance from third parent. (one2many)
fields relationship related related_fields odoo10
Аватар
0
мая 17
3638
Related field; Error: 'Environment' object has no attribute 'picking_state'
related_fields odoo10
Аватар
0
апр. 20
5689
Сообщество
  • Видео уроки
  • Документация
  • Форум
Открытый исходный код
  • Скачать
  • Github
  • Runbot
  • Перевод
Услуги
  • Хостинг Odoo.sh
  • Поддержка
  • Обновление
  • Индивидуальные решения по доработке
  • Образование
  • Найти бухгалтера
  • Найти партнера
  • Стать партнером
О нас
  • Наша компания
  • Активы бренда
  • Cвяжитесь с нами
  • Вакансии
  • Мероприятия
  • Подкаст
  • Блог
  • Клиенты
  • Правовые документы • Конфиденциальность
  • Безопасность
الْعَرَبيّة 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 ภาษาไทย Türkçe українська Tiếng Việt

Odoo – это набор бизнес-модулей с открытым исходным кодом, который закроет все потребности вашей компании: CRM, E-commerce, Бухгалтерия, Склад, POS, управление проектами и др.

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