2017-08-11 12 views
0

他の関連商品テンプレートの写真を表示する追加フ​​ィールドを組み込むように商品テンプレートフォームビューを拡張しようとしています(product_template id 10がproduct_template 20のこの追加フィールド画像に表示されます)。 )Odoo 10 - 特定の商品テンプレートの画像を表示

私はイメージフィールドは、モデルで定義されていることを参照してください。

この新しいフィールドを定義する方法だろう
# image: all image fields are base64 encoded and PIL-supported 
image = fields.Binary(
    "Image", attachment=True, 
    help="This field holds the image used as image for the product, limited to 1024x1024px.") 
image_medium = fields.Binary(
    "Medium-sized image", attachment=True, 
    help="Medium-sized image of the product. It is automatically " 
     "resized as a 128x128px image, with aspect ratio preserved, " 
     "only when the image exceeds one of those sizes. Use this field in form views or some kanban views.") 
image_small = fields.Binary(
    "Small-sized image", attachment=True, 
    help="Small-sized image of the product. It is automatically " 
     "resized as a 64x64px image, with aspect ratio preserved. " 
     "Use this field anywhere a small image is required.") 

?計算フィールドは使用できますか?使用できるより単純なリファレンスがありますか?

答えて

1

ここでは、カスタムモデルでImage fiedlを定義して値を与えるプロセスを具体的に説明しています。

from odoo import models, api, tools 

class CustomModel(models.Model): 
    _name = "custom.model" #or your inherited model 
    # inherit if product.template and use the related fielf product id if needed 
    image = fields.Binary("Image", compute='_compute_image_vals') 

@api.depends('image') 
def _compute_image_vals(self): 
    self.image = self._get_default_image(self.product_id) 

@api.model 
def _get_default_image(self, product_id): 
    image = False 
    if product_id: 
     product_image = self.browse(product_id).image 
     image = product_image and product_image.decode('base64') or None 
     return tools.image_resize_image_big(image.encode('base64')) 
+0

ちょうど言及している私が使っていたとして、<フィールド名を=「...」ウィジェット= 『画像』クラス= 『oe_avatar』読み取り専用= 『真』 />私はちょうど_get_default_image方法でproduct_imageを返した形で。なぜデコードとエンコードが行われるのですか? product_imageを返すだけで何か欠けていますか? –

+0

投稿に間違いがあります。継承は、_nameに割り当てられた既存のモデルの名前だけでは機能しません。 _inheritおよび_name(継承)、_inheritおよび_name(拡張子)、_nameおよび_inherit ** s **(委任)のみが定義可能です。 odooのドキュメントで[継承](https://www.odoo.com/documentation/10.0/reference/orm.html#inheritance-and-extension)を確認してください。 – coreuter

+0

カスタム名を継承すると、新しいテーブルが正しく作成されますか? @coreuter –

関連する問題