我正在研究Hr_Recruitment模块。我已经为HR-> Application.I添加了一个二进制图像字段。我正在尝试为外部用户添加功能,以通过网站自己填充作业应用程序。我添加了名称,电子邮件,手机,恢复工作申请网站中的附件字段。当他们点击提交时,它正在HR->工作申请表中更新。但是图片字段没有在Application中更新。打开工作申请时它显示的消息如“无法显示所选图像“。如何解决此问题?
控制器/ main.py
if post.get('image',False):
image = request.registry['ir.attachment']
name = post.get('image').filename
file = post.get('image')
attach = file.stream
file.show()
f = attach.getvalue()
webbrowser.open(image)
attachment_id = Attachments.create(request.cr, request.uid, {
'name': image,
'res_name': image,
'res_model': 'hr.applicant',
'res_id': applicant_id,
'datas': base64.decodestring(str(res[0])),
'datas_fname': post['image'].filename,
}, request.context)
views/templates.xml
<div t-attf-class="form-group">
<label class="col-md-3 col-sm-4 control-label" for="image">Image</label>
<div class="col-md-7 col-sm-8">
<img id="uploadPreview" style="width: 100px; height: 100px;" />
<input id="uploadImage" name="image" type="file" class="file" multiple="true" data-show-upload="true" data-show-caption="true" data-show-preview="true" onchange="PreviewImage();"/>
</div>
</div>
答案 0 :(得分:1)
在XML模板中添加如下所示的图像字段:
<img itemprop="image" style="margin-top: -53px; margin-left:19px; width:80px;" class="img img-responsive" t-att-src="website.image_url(partner, 'image', None if product_image_big else '300x300')"/>
<input class="input-file profileChooser" id="fileInput" type="file" name="ufile" onchange="validateProfileImg();"/>
为您删除不必要的属性。
在控制器功能中,您可以从图像字段中获取值:
vals = {}
if post['ufile']:
vals.update({'image': base64.encodestring(post['ufile'].read())})
request.registry['res.partner'].write(cr, uid, [partner_id], vals)
以上代码适用于我,我一直用它来更新ODOO网站的合作伙伴图像。
答案 1 :(得分:0)
我正在使用 odoo13,我使用这种格式将图像从网站上传到 respartner 表单视图:
<div class="col-md-6">
<label for="image_1920" class="form-label">Passport Photo*</label>
<input type="file" class="form-control" id="image_1920" name="image_1920" required="1" />
</div>
import base64
@http.route('/registered', auth='public', methods=['GET', 'POST'], website=True)
def registration_submit(self, *args, **kw):
image = kw.get('image_1920', False)
kw.update({
'free_member': True,
'image_1920': base64.encodestring(image.read()) if image else False
})
member = request.env['res.partner'].sudo().create(kw)