2

我正在开发 Hr_Recruitment 模块。我为 HR->Application 添加了一个二进制图像字段。我正在尝试为外部用户添加功能,以通过网站自行填写工作申请。我添加了姓名、电子邮件、电话、简历附件工作申请网站中的字段。当他们点击提交时,它在 HR-> 工作申请表中更新。但是图像字段在应用程序中没有得到更新。打开工作申请时它显示类似“无法显示所选内容”的消息图像”。如何解决这个问题?

控制器/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>

网站页面的申请表 人力资源->申请表

4

2 回答 2

2

在您的 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 网站上的合作伙伴图像。

于 2016-06-22T06:06:09.543 回答
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)
于 2021-02-07T10:30:25.993 回答