Django-int()参数必须是字符串,类似字节的对象或数字,而不是'SimpleLazyObject'

时间:2019-12-18 17:53:03

标签: django

将组件安装到运行django 2.1的项目中后,出现此错误:


int() argument must be a string, a bytes-like object or a number, not 'SimpleLazyObject'

视图

class TrackLikeToggle(RedirectView):
    def get_redirect_url(self, *args, **kwargs):
        id = self.kwargs.get("id")
        obj = get_object_or_404(Post, id=id)
        url_ = obj.get_absolute_url()
        user = self.request.user
        if user in obj.likes.all():
            obj.likes.remove(user)
        else:
            messages.add_message(self.request, messages.INFO, '1')
            obj.likes.add(user)
        return url_

完整回溯:https://pastebin.com/FmkFKDW3


非常感谢您

1 个答案:

答案 0 :(得分:0)

我认为这是因为

obj.likes.add(user)行代码被点击时,该用户未通过身份验证,这将返回Django的默认请求用户对象,该对象是SimpleLazyObject的实例。您可以将视图设置为login_required,也可以尝试检查用户是否已通过身份验证。

有关此的更多详细信息,您可以关注此Link