データファイル

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 でなければなりません。 フィールドの値として設定されます

主に Many2oneReference フィールド

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 attachments

int

は、フィールドの内容を整数に変換し、フィールドの値として設定します。

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

モデルを削除するレコードを見つけるための ドメイン

idsearch は排他的です

function

function タグは、与えられたパラメータを持つモデル上のメソッドを呼び出します。 modelname の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

Trueinherited 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.statename フィールドです。

  • 4番目のカラムは res.country.statecode フィールドです。