콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
4 답글
10130 화면

I am trying to create a model for product images in Odoo 10. A product image can have one original uploaded image and two computed versions: medium and small. This is the code I wrote:

# -*- coding: utf-8 -*-
from odoo import models, fields, api, tools

class ProductImage(models.Model):
    _name = 'product_images.product_image'
  _description = 'Product image'

    name = fields.Char(string="Alternative text")
  product_id = fields.Many2one('product.product', string='Product', ondelete='set null', index=True)
  original_image = fields.Binary(string='Original image')
    medium_image = fields.Binary(string='Medium image', compute='_resize_image', store=True)
  small_image = fields.Binary(string='Small image', compute='_resize_image', store=True)

    @api.depends('original_image')
  def _resize_image(self):
        for record in self.with_context(bin_size=False):
            data = tools.image_get_resized_images(record.original_image)
 record.medium_image = data['image_medium']
  record.small_image = data['image_small']


When I change the original_image in the form view or in the Odoo shell, _resize_image() is called, but medium_image and small_image values are not saved. What do I miss?


아바타
취소

after save the form don't you see the image shrinks??

작성자

Unfortunately not. I see empty values for the medium_image and small_image.

작성자

I also tried @api.onchange for the binary image, but that didn't work either.

작성자 베스트 답변

After lots of trial and error, I found out that I can't set empty context for the record to be modified, because then the assignment statement doesn't save the record to the database. So I ended up with this code:

    @api.depends('original_image')    
def _resize_image(self):
        original_image = self.with_context({}).original_image
if original_image:
            data = tools.image_get_resized_images(original_image)
self.medium_image = data['image_medium']
self.small_image = data['image_small']
else:
            self.medium_image = ""
self.small_image = ""
아바타
취소
관련 게시물 답글 화면 활동
2
5월 23
7783
1
11월 24
39608
3
4월 22
16925
1
8월 20
6092
2
4월 20
2586