ようこそ!

このフォーラムはOdooに興味がある方はどなたでも参加いただけます。Odooに関する質問を投稿したり、質問に回答したりすることができます。

0

1
アバター

Manami Hashi

--Manami Hashi--

1095
| 4 1 2
--Manami Hashi--
Manami Hashi
オン 2016/03/16 9:32

設定->技術->データベース構造 に行きますと大体のことがわかります。



「モデル」がテーブルで、「項目」がカラムに対応しており、




SELECT (項目名) FROM (モデル名); でほとんどの情報を検索することができます。



ただ、顧客のカテゴリーに対応するパートナータグなどは、ひとつのレコードに複数の情報を持ちますので、先程の構文では検索できません。


このような項目(フィールド)は Many2Many field といいます。


Many2Many field

設定->技術->データベjース構造->多対多の関係 に進むと、Many2Many field の関係に対応するテーブルが見られます。



パートナーとパートナータグの関係に対応するテーブルは res_partner_res_partner_category_rel です。



データベースから覗くと、そのテーブルはパートナーIDとカテゴリーIDのカラムを持っていることがわかりますね。



プロパティフィールド

Many2Many field 以外にもうひとつ注意すべきフィールドがあります。

たとえば顧客の会計に関する情報に、「会計ポジション」や「売掛金勘定」がありますが、これらはパートナーテーブルではなく、別のテーブルに格納されています。



それらはプロパティフィールドといって、設定->技術->パラメータ->Company Properties から確認できます。



たとえばプロパティフィールド「顧客支払条件」は、プロパティテーブル内に property_payment_term というレコードを持っていて、パートナーのIDと、支払条件のIDの情報を持っているというわけです。



まとめ

  • データベースからは SELECT (項目名) FROM (モデル名); で検索!
  • Many2Many fieldは「多対多の関係」から関連するテーブルを探せ!
  • Property field は「Company Properties」から関連するレコードを探せ!



0
Takuya Sawada
オン 2018/03/29 13:52

田代さんの回答で、十分問題解決できていると思いますが、
複雑なモデルの場合、SQL のリレーションを自分で JOIN するのはなかなか大変かもしれません。

また、読取専用で SELECT 等する分には問題ないですが UPDATE 等直接 Postgres で実行するのは怖いので、
Odoo の WEB XML RPC の API を利用することをオススメします。
こちらを使えば、複雑なモデルでも比較的簡単に扱えます。

英語ですが、以下に参考リンクを貼っておきます。

Ref) https://www.odoo.com/documentation/11.0/webservices/odoo.html

また、大規模なデータの取り込みの高速化等は
以下のスライドがとても参考になるかと思います。

Ref) https://www.odoo.com/slides/slide/how-to-import-large-complex-data-into-odoo-455/pdf_content


アップデート通知

このコミュニティについて

このフォーラムはOdooに興味がある方はどなたでも參加いただけます。Odooに関するFAQの参照、質問の投稿が可能です。 Read Guidelines

質問ツール

2 フォロワー

統計

質問日: 2016/03/16 9:32
参照回数: 2931
最終更新: 2020/03/07 14:09