第6章:基本ビュー

previous chapter で、Odoo が与えられたモデルのデフォルトビューを生成することができます。 実際には、デフォルトのビューは 決して ビジネスアプリケーションで受け入れられません。代わりに、少なくとも論理的な方法で様々なフィールドを整理する必要があります。

ビューは、アクションやメニューを含むXMLファイルで定義されます。ビューは、 ir.ui.view モデルのインスタンスです。

今回の不動産モジュールでは、フィールドを論理的に整理する必要があります。

  • リストビューでは、名前だけではなく、もっと表示したいと思います。

  • フォームビューでは、フィールドをグループ化する必要があるでしょう。

  • 検索ビューでは、名前以外の項目も検索できるようにする必要があります。具体的には、 入居可能な 物件のフィルタリングと、郵便番号(postcode)でグループ化するためのショートカットが必要です。

一覧表示

参照: このトピックに関連するドキュメントは、 一覧表示 にあります。

注釈

目標: このセクションの終わりには、リストビューが次のようになっているはずです。

ビュー一覧

リストビューは、リストビューとも呼ばれ、表形式でレコードを表示します。

Their root element is <list>. The most basic version of this view simply lists all the fields to display in the table (where each field is a column):

<list string="Tests">
    <field name="name"/>
    <field name="last_seen"/>
</list>

簡単な例は ここ です。

Exercise

カスタム リスト ビューを追加しましょう。

適切なXMLファイルで estate.property モデルのリストビューを定義します。表示するフィールドについては、このセクションの 目標 を確認してください。

ヒント:

  • 先の例にある editable="bottom" 属性を追加しないでください。これについては後ほど説明します。

  • 一部のフィールドのラベルは、参照先に合わせて変更する必要があります。

いつものように、結果を確認するには、サーバーを再起動し (-u オプションを忘れずに) 、ブラウザを更新する必要があります。

警告

この章ではコピーペーストを使用することが多いと思いますが、その際には各ビューで id が一意であることを必ず確認してください。

警告

:doc:`security intro <04_securityintro>で説明されているように、ユーザーに正しいアクセス権を設定してください!

作成 ボタンは読み取り権限のみの場合は表示されません。

フォーム

参照: このトピックに関連するドキュメントは、 フォーム にあります。

注釈

目標: このセクションの終わりには、フォームビューが次のようになっているはずです。

フォームビュー

フォームは、単一のレコードの作成と編集に使用されます。

ルート要素は <form> です。高レベルの構造要素 (グループとノートブック) とインタラクティブ要素 (ボタンとフィールド) で構成されています。

<form string="Test">
    <sheet>
        <group>
            <group>
                <field name="name"/>
            </group>
            <group>
                <field name="last_seen"/>
            </group>
        </group>
        <notebook>
            <page string="Description">
                <field name="description"/>
            </page>
        </notebook>
    </sheet>
</form>

外見を微調整するために、 divh1 などの通常の HTML タグと、 class 属性 (Odoo はいくつかの組み込みクラスを提供します) を使用することができます。

単純な例は こちら です。

Exercise

カスタム フォーム ビューを追加しましょう。

適切なXMLファイルで estate.property モデルのフォームビューを定義します。ページの最終的なデザインについては、このセクションの 目標 を確認してください。

期待通りの結果が得られるまで、多少の試行錯誤が必要になるかもしれません。 ;-) 仕組みを理解するために、フィールドやタグを1つずつ追加していくことをお勧めします。

ビューに変更を加えるたびにサーバを再起動するのを避けるために、サーバを起動する際に --dev xml パラメータを使用すると便利です。

$ ./odoo-bin --addons-path=addons,../enterprise/,../tutorials/ -d rd-demo -u estate --dev xml

このパラメータを使用すると、ページを更新してビューの変更を表示することができます。

ドメイン

参考: このトピックに関連する文書は ドメインを検索 にあります。

Odooでは、ドメインはレコードの条件をコード化します。ドメインは、モデルのレコードのサブセットを選択するために使用される条件のリストです。各条件は、 フィールド名演算子 の3つでセットです。指定されたフィールドが、その値に適用された演算子の条件を満たす場合、レコードもまた条件を満たします。

例えば、 Product モデルに次のようなドメインを使用すると、単価が 1000 以上の サービス がすべて選択されます。

[('product_type', '=', 'service'), ('unit_price', '>', 1000)]

デフォルトでは、条件は暗黙的にANDで結合されます。つまり、ドメインにマッチするレコードには、すべての条件が満たされている必要があります。論理演算子の & (AND) 、 | (OR) 、 ! (NOT) を使用して、条件を明示的に組み合わせることができます。これらの演算子は前置詞として使用されます(演算子は引数の間ではなく前に挿入されます) 。例えば、 `サービスであるか、 または 単価が1000から2000の間 でないもの ` を選択するには、次のようにします。

['|',
    ('product_type', '=', 'service'),
    '!', '&',
        ('unit_price', '>=', 1000),
        ('unit_price', '<', 2000)]

注釈

XML does not allow < and & to be used inside XML elements. To avoid parsing errors, entity references should be used: &lt; for < and &amp; for &. Other entity references (&gt;, &apos; & &quot;) are optional.

Example

<filter name="negative" domain="[('test_val', '&lt;', 0)]"/>

Exercise

フィルターとグループ化を追加してみましょう。

先に作成した検索ビューに次のものを追加します。

  • 利用可能な物件を表示するフィルタ - state は New または Offer Received とする

  • 検索結果を郵便番号でグループ化することもできるようになります。

良さそうに見えますか? この時点で、我々はすでにモデルを作成し、ビジネスを賢明にするユーザーインターフェイスを設計することができます。 しかし、 モデル間のリンク がまだありません。