Я пытаюсь отфильтровать по определенному коду продукта, используя PHP API ODOO. Если я отфильтрую qty_available > 0
работает нормально
$records = $models->execute_kw($db, $uid, $pass, 'product.product', 'search_read', array(
array(
array('qty_available', '>', 0),
),
), array(
'fields' => array('code', 'display_name', 'qty_available')
));
… но когда я фильтрую по коду, он возвращает все результаты, по существу игнорируя любые фильтры:
$records = $models->execute_kw($db, $uid, $pass, 'product.product', 'search_read', array(
array(
array('code', '=', 'T-0001'),
),
), array(
'fields' => array('code', 'display_name', 'qty_available')
));
Кто-нибудь знает, почему это может происходить, пожалуйста? Он также отлично работает, используя целочисленный идентификатор, но не строковый код. Спасибо!
В модели product.product
code
поле является функциональное поле / вычислительное поле .
Этот тип поля Не для поиска по умолчанию.
Но вы можете отметить store = True и найти его.
ПРИМЕЧАНИЕ: есть плюсы и минусы маркировки магазина = True
Спасибо Пракаш Шарме за помощь, но оказывается, что реальный способ заставить его работать — это использовать product.product
поле default_code
скорее, чем code
, который, к счастью, доступен для поиска. Это может отличаться в зависимости от настроек других, но я не хотел заходить и менять базу данных, и я думаю, что внутренняя ссылка должна быть чистой, как это было задумано.