В чем разница между product.product и product.template? Зачем в Odoo две модели для товаров? Все просто:
- product.template — шаблон товара. Содержит основную информацию о товаре которая будет общей для всех вариантов. Имеет минимум 1 вариацию.
- product.product — это модель для хранения вариативных товаров. Является «ребенком» product.template, может содержать отличающиеся параметры и атрибуты.
Вариативные товары в Odoo
В Odoo реализованы вариативные товары (product variants). По умолчанию они выключены, но их можно включить в товарах.

Вариативные товары рекомендуется использовать, когда у нас есть товар, который отличается отдельным атрибутом (размер одежды например).
Особенности вариативных товаров:
- Цена: вариативный товар может иметь особые правила для ценообразования.
- Наличие: остатки на складах учитываются для вариативных товаров, в то время как в product template будет показана сумма всех вариантов.
- Изображение товара: каждая вариация имеет свое изображение.
- Штрих-код (barcode): каждый вариативный товар может иметь свой штрих-код / артикул.
Большинство параметров product.product принадлежат product.template, так что если вы их обновите в шаблоне товара, во всех вариациях они тоже обновятся. Подробнее о вариациях можно почитать в справке.
Чтобы создать вариативный товар, вам необходимо добавить атрибуты к товару (product.template).Это автоматически создаст варианты товара.
Где используется product.product в Odoo?
Для примера возьмем ecommerce модуль для Odoo. Категории товаров используют product.template, в то время как при оформлении заказа используется уже product.product.
Модель product.product используется в:
- sale
- purchase
- stock
- inventory
- pos и других модулях.
Когда вы создаете SO или PO, на самом деле вы используете вариант продукта, а не его шаблон.
Если вы не используете вариативные товары (варианты), модели и таблицы product.product и product.template будут почти одинаковые.