上传fi时的AttributeError

2024-06-28 20:37:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个建议模块,我想添加一个允许用户上载文件的字段:

class file_upload (models.Model):
    _name="mod.progress.fileupload"
    name=fields.Char('name')
    type=fields.Char('type')
    content=fields.Binary()

    @api.model
    def create(self, vals):
         vals.update({            
            'name': base64.encode(self.content.filename),
            'type':base64.encode(self.content.mimetype),
        })
        return super(file_upload, self).create(vals)

class mod_progress(models.Model):
    _name="mod.progress"
    attachement_id = fields.Many2one('mod.progress.fileupload', 'Attachement')

我经常会遇到这样的错误:

Traceback (most recent call last):
return super(JsonRequest, self)._handle_exception(exception)
File "C:\Users\Utilisateur\git\persol\odoo\openerp\http.py", line 576, in dispatch
result = self._call_function(**self.params)
File "C:\Users\Utilisateur\git\persol\odoo\openerp\http.py", line 312, in _call_function
return checked_call(self.db, *args, **kwargs)
File "C:\Users\Utilisateur\git\persol\odoo\openerp\service\model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "C:\Users\Utilisateur\git\persol\odoo\openerp\http.py", line 309, in checked_call
return self.endpoint(*a, **kw)
File "C:\Users\Utilisateur\git\persol\odoo\openerp\http.py", line 805, in __call__
return self.method(*args, **kw)
File "C:\Users\Utilisateur\git\persol\odoo\openerp\http.py", line 405, in response_wrap
response = f(*args, **kw)
File "C:\Users\Utilisateur\git\persol\odoo\addons\web\controllers\main.py", line 944, in call_kw
return self._call_kw(model, method, args, kwargs)
File "C:\Users\Utilisateur\git\persol\odoo\addons\web\controllers\main.py", line 936, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
File "C:\Users\Utilisateur\git\persol\odoo\openerp\api.py", line 268, in wrapper
return old_api(self, *args, **kwargs)
File "C:\Users\Utilisateur\git\persol\odoo\openerp\api.py", line 372, in old_api
result = method(recs, *args, **kwargs)
File "C:\Users\Utilisateur\git\persol\odoo\addons\mgmtsystem_progress\models\mgmtsystem_progress.py", line 15, in create
'name': base64.encode(self.content.filename),
AttributeError: 'bool' object has no attribute 'filename'

我刚才加了这句话vals.update更新地址:

print(type(self.content), dir(self.content))

这是输出:

(<type 'bool'>, ['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real'])

Tags: nameinpyodoogitselfreturnline