2013-07-16 81 views
0

我正在使用Backbone.js + Tastypie + Django我试图用patch = true保存模型以更新点一个模型,如Django Tastypie:“error_message”:“'bool'object has no attribute'read'”

this.save({ 
    points: newPoints 
}, { 
    patch: true 
}); 

这发出PUT请求使用,应请求负载

points: 105 

不过,我得到一个500错误信息

{"error_message": "'bool' object has no attribute 'read'", "traceback": "Traceback (most recent call last): 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/tastypie/resources.py\", line 217, in wrapper 
    response = callback(request, *args, **kwargs) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/tastypie/resources.py\", line 468, in dispatch_detail 
    return self.dispatch('detail', request, **kwargs) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/tastypie/resources.py\", line 491, in dispatch 
    response = method(request, **kwargs) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/tastypie/resources.py\", line 1656, in patch_detail 
    self.update_in_place(request, bundle, deserialized) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/tastypie/resources.py\", line 1679, in update_in_place 
    return self.obj_update(bundle=original_bundle, **kwargs) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/tastypie/resources.py\", line 2209, in obj_update 
    bundle = self.full_hydrate(bundle) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/tastypie/resources.py\", line 909, in full_hydrate 
    value = field_object.hydrate(bundle) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/tastypie/fields.py\", line 382, in hydrate 
    value = make_aware(parse(value)) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/dateutil/parser.py\", line 720, in parse 
    return DEFAULTPARSER.parse(timestr, **kwargs) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/dateutil/parser.py\", line 308, in parse 
    res = self._parse(timestr, **kwargs) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/dateutil/parser.py\", line 356, in _parse 
    l = _timelex.split(timestr) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/dateutil/parser.py\", line 150, in split 
    return list(cls(s)) 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/dateutil/parser.py\", line 147, in next 
    return self.__next__() # Python 2.x support 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/dateutil/parser.py\", line 141, in __next__ 
    token = self.get_token() 

    File \"/Users/me/.virtualenvs/project/lib/python2.7/site-packages/dateutil/parser.py\", line 72, in get_token 
    nextchar = self.instream.read(1) 

AttributeError: 'bool' object has no attribute 'read' 
"} 

下面是用户配置

class UserProfileResource(ModelResource): 

    """A resource for the UserProfile model.""" 

    class Meta: 
     queryset = UserProfile.objects.all() 
     resource_name = 'userprofile' 
     authorization = Authorization() 
     excludes = ['field_to_exclude'] 
     always_return_data = True 

我的模型资源有没有人对如何调试这个错误提示?

+0

这是服务器端故障。你可以在处理请求的服务器上显示一些代码吗? – Gevious

+0

我已经添加了我的服务器代码 - 我正在使用tastypie,所以我唯一的自定义是定义资源。由于它使用的是库而不是我的代码,因此我不太确定如何跟踪它 – jkeesh

回答

0

我有一个字段,它是一个空的datetimefield,而不是在api调用中显示为日期时间,显示为布尔值。我不确定为什么会发生这种情况,但我认为这是tastypie中的一个错误,或者我误解了配置的一些内容,或者两者都有。

我从tastypie资源中排除了该字段,我能够成功地将PUT和PATCH添加到模型中。

相关问题