データベースから直接情報を取得するにはどのようにすれば良いですか?

PostgreSQL から直接データベースにアクセスして、Odoo内の情報を取得したいのですが、テーブルやカラムはどこで確認すれば良いですか?

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

image

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

image

image

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

image

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

image

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

Many2Many field

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

image

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

image

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

image

プロパティフィールド

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

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

image

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

image

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

image

まとめ

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

もっと情報が必要ですか?

このハウツーはQ&Aフォーラムから参考になりそうな質問を抜粋しています。元の質問では参加者が質問、フィードバックを行うことが可能です。

元の質問に移動