Django SimpleLazyObject

Tch*_*hec 6 python django django-templates django-views

当我尝试提交时,我得到一个TypeError:

int()参数必须是字符串或数字,而不是'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 bookmarks.
            bookmark, created = Bookmark.objects.get_or_create(
                user = request.user,
                link = link
                )
            # Update bookmark title.
            bookmark.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)
Run Code Online (Sandbox Code Playgroud)

请指导我.谢谢.

kar*_*ikr 12

request.user,默认为类型SimpleLazyObject.要解决它,

bookmark, created = Bookmark.objects.get_or_create(
            user = request.user,
            link = link
            )
Run Code Online (Sandbox Code Playgroud)

应该

bookmark, created = Bookmark.objects.get_or_create(
            user = request.user.id,
            link = link
            )
Run Code Online (Sandbox Code Playgroud)

如果这不能解决它,请确保您已登录.

  • 看起来你还没有登录.你是 ?使用`@ login_required`装饰器 (2认同)
  • 好的,抱歉我没有登录.但是现在我正在收到此错误:`无法分配"3":"Bookmark.user"必须是"用户"实例 (2认同)