int() 参数必须是字符串或数字,而不是“SimpleLazyObject" [英] int() argument must be a string or a number, not 'SimpleLazyObject'

查看:29
本文介绍了int() 参数必须是字符串或数字,而不是“SimpleLazyObject"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到错误消息,

TypeError at/save/int() 参数必须是字符串或数字,而不是'SimpleLazyObject'

TypeError at /save/ int() argument must be a string or a number, not 'SimpleLazyObject'

在执行以下表单时.

views.py

def bookmark_save_page(request):
    if request.method == 'POST':
        form = BookmarkSaveForm(request.POST)
        if form.is_valid():
            # create or get link
            link, dummy = Link.objects.get_or_create(
                    url = form.cleaned_data['url']
                    )
            # create or get bookmark
            bookmark, created = Bookmark.objects.get_or_create(
                    user=request.user,
                    link=link
                    )
            # update bookmarks title
            bookmarks.title = form.cleaned_data['title']
            # if the bookmark is being updated, clear old tag list.
            if not created:
                bookmark.tag_set.clear()
            # create new tag list
            tag_names = form.cleaned_data['tags'].split()
            for tag_name in tag_names:
                tag, dummy = Tag.objects.get_or_create(name=tag_name)
                bookmark.tag_set.add(tag)
            # save bookmark to database.
            bookmark.save()
            return HttpResponseRedirect(
                    '/user/%s/' % request.user.username
                    )
    else:
        form = BookmarkSaveForm()
    variables = RequestContext(request, {
        'form': form
    })
    return render_to_response('bookmark_save.html', variables)

<小时>

我以为我出错了,因为我在


I thought I got error because I passed link at

bookmark, created = Bookmark.objects.get_or_create(
                    user=request.user,
                    link=link
                    )

但是我不知道如何解决它.我该如何解决?

But I can not figure out how to fix it. How can I fix it?

推荐答案

可能的原因是您设置了 user = request.user,其中 request.user 不是真正的 User 对象,但是一个 SimpleLazyObject 实例.参见 django:django.utils.functional.SimpleLazyObject 的目的? 了解更多详情,但使用 request.user.id 应该可以解决您的问题.

The likely cause is that you're setting user = request.user, where request.user is not a real User object, but a SimpleLazyObject instance. See django: Purpose of django.utils.functional.SimpleLazyObject? for more details, but using request.user.id should fix your issue.

这篇关于int() 参数必须是字符串或数字,而不是“SimpleLazyObject"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆