1
私はOdoo ORMを使用して関連フィールドの値に基づいて検索しようとしています。関連分野は、2つのmany2one関係を通してアクセスされる:あなたが見ることができるようにOdoo検索ドメインでmany2oneフィールドを使用
info = env['product.supplierinfo'].search([ \
('product_tmpl_id.product_variant_id.id', '=', line.product_id.id), \
('product_tmpl_id.product_variant_id.active', '=', True), \
('x_provides_stock', '=', True), \
('x_available_qty', '>', 0)])
、ドメインの最初の2組はproduct_tmpl_id.product_variant_id
てフィールドを検索しています。しかし、私が必要以上に多くの結果を得ているので、このドメインは機能していないようです。
私が代わりにクエリの後のフィルタ方法にそれらの2つの制約を追加する場合、私は期待どおりの結果を得る:
info = env['product.supplierinfo'].search([ \
('x_available_qty', '>', 0), \
('x_provides_stock', '=', True)]) \
.filtered(lambda i: i.product_tmpl_id.product_variant_id == line.product_id and i.product_tmpl_id.product_variant_id.active)
は、私が最初の方法と間違ってやっている何かがありますか?ドキュメンテーションによれば、ドメイン内のmany2oneフィールドを通る関係トラバーサルを使用できます。これは1つのmany2oneフィールドに限定されていますか?