Odoo 開発では、Create メソッドを使用して新しいレコードを簡単に作成し、データベースに保存します。この記事では、Create メソッドの基本的な構文と使用例を紹介し、いくつかの高度な使用法とテクニックをさらに詳しく説明します。
- Create メソッドの基本構文
Odoo では、Create メソッドはモデル オブジェクト (Model) を通じて呼び出されます。Create メソッドの基本的な構文は次のとおりです。
model.create(values)
ここで、model はターゲット モデルまたはモデル オブジェクトの名前、values は作成されるレコードのフィールド値を含む辞書です。
- 使用例
Create メソッドの使用法をよりよく理解するために、サンプル モデル「Product」を例として説明します。「Product」モデルに次のフィールドがあるとします: name (製品名)、price (価格)、description (説明)。
Create メソッドを使用して新しい製品を作成するサンプル コードを次に示します。
Product = env['product.product']
values = {
'name': 'New Product',
'price': 9.99,
'description': 'This is a new product.'
}
new_product = Product.create(values)
上記の例では、まず「Product」モデルのオブジェクトを取得し、次に作成するプロダクトのフィールド値を定義しました。最後に、Create メソッドを呼び出すことで、新しい製品レコードが正常に作成され、それが変数 new_product に割り当てられました。
- 高度な使用法とトリック
基本的な Create メソッドの使用法に加えて、Odoo には、レコードの作成時にさらに制御および処理するための高度なオプションとトリックもいくつか用意されています。
3.1 レコードをバッチで作成する
Create メソッドを使用すると、単一のレコードを作成するだけでなく、複数のレコードをバッチで作成することもできます。複数の辞書を含むリストを Create メソッドに渡すだけです。例えば:
products = [
{'name': 'Product 1', 'price': 10.99},
{'name': 'Product 2', 'price': 19.99},
{'name': 'Product 3', 'price': 15.99}
]
Product.create(products)
上記のコードは、同時に 3 つの製品レコードを作成します。
3.2 デフォルト値の使用
場合によっては、レコードの作成時にフィールドのデフォルト値を使用したい場合があります。これは、値ディクショナリ内の特定のフィールドを省略することで実現できます。例えば:
values = {'name': 'New Product'}
new_product = Product.create(values)
上記のコードでは、以下のみを提供します
「名前」フィールドの値。他のフィールドはデフォルト値を使用します。
3.3 関連レコードの作成
レコードを作成する際、関連レコードも同時に作成する必要がある場合があります。Create メソッドでは、特別なフィールド名と値を使用して関連付けを示すことができます。例えば:
values = {
'name': 'New Order',
'partner_id': partner.id,
'line_ids': [(0, 0, {'product_id': product.id, 'quantity': 1})]
}
order = Order.create(values)
上記のコードでは、新しい注文レコードを作成し、それを「partner_id」フィールドを通じて特定のパートナー レコードに関連付けます。同時に、「line_ids」フィールドを使用して新しい注文明細レコードが作成されます。