我有一个建议模块,我想添加一个允许用户上传文件的字段:
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'])