Odoo的Binary字段默认保存的是Base64转码后的字符串。那么我们该如何为Binary字段设置默认值呢?比如一个默认的图片。答案当然是将图片文件的内容用Base64转码后赋给这个字段的default属性。
方法1 :
比如你可以把一个图片用在线工具转码为Base64格式字符串:
data:image/png;base64,iVRORw0KGgoBBBNSUhEUgAAAAEAAAABCAIAAACQd1PeAAAA.....................
去掉头部的data:image/png;base64,信息,把剩余的内容保存为默认值
DEFAULT_IMG = 'iVRORw0KGgoBBBNSUhEUgAAAAEAAAABCAIAAACQd1PeAAAA.....................'
class MyModel(models.Model):
_name = 'my.model'
field_binary = fields.Binary(default=DEFAULT_IMG)
方法2:
将图片文件保存在模块目录下,比如:
/my_module/static/img/my_image.png
设置默认值:
import base64
from odoo import models, fields
from odoo import modules
def get_default_img():
with open(modules.get_module_resource('my_module', 'static/img', 'my_image.png'),
'rb') as f:
return base64.b64encode(f.read())
class MyModel(models.Model):
_name = 'my.model'
field_binary = fields.Binary(default=get_default_img())