データファイル¶
Odooは非常にデータ駆動であり、モジュール定義の大部分は、UI(メニューとビュー)を管理するさまざまなレコードの定義です。 セキュリティ(アクセス権およびレコードルール)、レポートおよびプレーンデータはすべてレコードを介して定義されます。
給与体系¶
Odoo でデータを定義する主な方法は、XML データファイルを使用することです: XML データファイルの広範な構造は以下のとおりです:
ルート要素内の任意の操作要素の数
odoo
<?xml version="1.0" encoding="UTF-8"?>
<!-- the root elements of the data file -->
<odoo>
<operation/>
...
</odoo>
データファイルは順番に実行され、オペレーションは以前に定義されたオペレーションの結果のみを参照できます。
注釈
データファイルの内容が一度だけ適用されると思われる場合は、odoフラグ``noupdate`` を 1 に設定します。 ファイル内のデータの一部が一度だけ適用されることが期待される場合。 ファイルのこの部分を <data noupdate="1"> ドメインに配置できます。
<odoo>
<data noupdate="1">
<!-- Only loaded when installing the module (odoo-bin -i module) -->
<operation/>
</data>
<!-- (Re)Loaded at install and update (odoo-bin -i/-u) -->
<operation/>
</odoo>
コア操作¶
record
¶
record
は、データベースのレコードを適切に定義または更新します。次の属性があります。
model
(必須)作成するモデルの名前 (または更新)
id
このレコードの 外部識別子 を指定することを強くお勧めします。
レコードを作成する場合、以降の定義でこのレコードを変更または参照することができます。
を選択します。
context
レコードを作成するときに使用するコンテキスト
forcecreate
が存在しない場合にレコードを作成するかどうかを更新モード
外部 ID が必要です。デフォルトは
True
です。
field
¶
各レコードは field
タグで構成することができ、レコードの作成時に設定する値を定義します。 field
がない``record`` はすべてのデフォルト値を使用します(作成)または何もしません(更新)。
field
には必須の name
属性、設定するフィールドの名前、および値自体を定義するための様々なメソッドがあります。
- なし
フィールドに値が指定されていない場合、暗黙の
False
がフィールドに設定されます。 フィールドをクリアしたり、フィールドのデフォルト値を使用しないようにするために使用できます。search
リレーショナルフィールド の場合、フィールドのモデル上で :ref:`ドメイン <reference/orm/domains>にする必要があります。
ドメインを評価し、フィールドのモデルを検索し、検索結果をフィールドの値として設定します。 フィールドが
Many2one
の場合のみ、最初の結果を使用します。ref
ref
属性が指定された場合、その値は有効な external id でなければなりません。 フィールドの値として設定されます主に
Many2one
とReference
フィールドtype
type
属性が指定されている場合は、フィールドの内容を解釈して変換するために使用されます。 フィールドの内容はfile
属性を使用するか、ノードの本文を使用して外部ファイルから提供することができます。利用可能なタイプは次のとおりです。
xml
,html
extracts the
field
's children as a single document, evaluates any external id specified with the form%(external_id)s
.%%
can be used to output actual % signs.file
フィールドの内容が現在のモデルで有効なファイルパスであることを確認します ペア :samp:`{module},{path}`をフィールド値として保存します
char
フィールドの内容を変更せずにフィールドの値として直接設定します。
base64
base64-encodes the field's content, useful combined with the
file
attribute to load e.g. image data into attachmentsint
は、フィールドの内容を整数に変換し、フィールドの値として設定します。
float
は、フィールドの内容を float に変換し、フィールドの値として設定します。
list
,tuple
field
と同じプロパティを持つ任意の数のvalue
要素を含める必要があります 各要素は、生成されたタプルまたはリストのアイテムに解決され、生成されたコレクションは、フィールドの値として設定されます。
eval
以前のメソッドが不適切な場合
eval
属性は、与えられた Python 式を単純に評価し、結果をフィールドの値として設定します。評価コンテキストには様々なモジュール (
time
,datetime
,timedelta
,relativedelta
) が含まれています A function to resolve external identifiers (ref
) and the model object for the current field if apply(obj
)
delete
¶
delete
タグは、以前に定義されたレコードを削除できます。次の属性があります。
model
(必須)指定されたレコードを削除するモデル
id
削除するレコードの 外部 ID
search
モデルを削除するレコードを見つけるための ドメイン
id
と search
は排他的です
function
¶
function
タグは、与えられたパラメータを持つモデル上のメソッドを呼び出します。 model
と name
の2つの必須パラメータがあり、それぞれのモデルと呼び出すメソッドの名前を指定します。
パラメータは eval
(メソッドを呼び出すためのパラメータのシーケンスに評価する必要があります) または value
要素 (list
値を参照してください) を使用して提供できます。
<odoo>
<data noupdate="1">
<record id="partner_1" model="res.partner">
<field name="name">Odude</field>
</record>
<function model="res.partner" name="send_inscription_notice"
eval="[[ref('partner_1'), ref('partner_2')]]"/>
<function model="res.users" name="send_vip_inscription_notice">
<function eval="[[('vip','=',True)]]" model="res.partner" name="search"/>
</function>
</data>
<record id="model_form_view" model="ir.ui.view">
...
</record>
</odoo>
ショートカット¶
Odooのいくつかの重要な構造モデルは複雑で関与しているため、データファイルは :ref:`record tags <reference/data/record> `を使用して定義するより短い選択肢を提供します。
template
¶
ビューの arch
セクションのみを必要とする QWeb view を作成し、いくつかの 任意 属性を許可します。
id
ビューの 外部識別子
name
,inherited from id
,priority
ir.ui.view
の対応するフィールドと同じ (nb:legit_id
は 外部識別子` でなければなりません)primary
True
とinherited from id
を組み合わせると、ビューはプライマリとして定義されます。groups
カンマ区切りのグループ :term:のリスト
外部識別子
page
もし
"True"
に設定されている場合、テンプレートはウェブサイトのページになります (リンク先、削除可能)optional
enabled
またはdisabled
は、(ウェブサイトのインターフェイスで)ビューを無効にでき、デフォルトの状態にできます。未設定の場合、ビューは常に有効になります。
CSVデータファイル¶
XMLデータファイルは柔軟で自己説明的ですが、同じモデルの単純なレコードを大量に作成する場合は非常に冗長です。
この場合、データファイルは csv も使用できます。これはしばしば、 :ref:`access rights <reference/security/acl> `の場合です。
ファイル名は
model_name.csv
最初の行は書くフィールドを一覧表示し、 :term:の
id
特別なフィールド (作成または更新に使用)それぞれの行は新しいレコードを作成し
以下は res.country.state.csv
を定義するデータファイルの最初の行です。
"id","country_id:id","name","code"
state_au_1,au,"Australian Capital Territory","ACT"
state_au_2,au,"New South Wales","NSW"
state_au_3,au,"Northern Territory","NT"
state_au_4,au,"Queensland","QLD"
state_au_5,au,"South Australia","SA"
state_au_6,au,"Tasmania","TAS"
state_au_7,au,"Victoria","VIC"
state_au_8,au,"Western Australia","WA"
state_us_1,us,"Alabama","AL"
state_us_2,us,"Alaska","AK"
state_us_3,us,"Arizona","AZ"
state_us_4,us,"Arkansas","AR"
state_us_5,us,"California","CA"
state_us_6,us,"Colorado","CO"
より読みやすい形式でレンダリングされます:
ID |
country_id:id |
名前(name) |
コード |
---|---|---|---|
状態1 |
au |
オーストラリアの首都地域 |
ACT |
state_au_2 |
au |
ニューサウスウェールズ州 |
NSW |
state_au_3 |
au |
Northern Territory |
NT |
state_au_4 |
au |
クイーンズランド |
QLD |
state_au_5 |
au |
南オーストラリア |
SA |
状態6 |
au |
Tasmania |
TAS |
state_au_7 |
au |
ヴィクトリア |
VIC |
state_au_8 |
au |
西オーストラリア州 |
WA |
状態_us_1 |
私たちは |
アラバマ |
AL |
状態_us_2 |
私たちは |
Alaska |
AK |
状態_us_3 |
私たちは |
アリゾナ州 |
AZ |
状態_us_4 |
私たちは |
アーカンソー州 |
AR |
状態_us_5 |
私たちは |
カリフォルニア州 |
CA |
state_us_6 |
私たちは |
Colorado |
CO |
各行 (レコード):
最初の列は、作成または更新するレコードの 外部 id です。
2番目の列は、リンクする国オブジェクトの :term:`外部 ID`です(国オブジェクトは事前に定義されている必要があります)
3番目の列目は
res.country.state
のname
フィールドです。4番目のカラムは
res.country.state
のcode
フィールドです。