【问题标题】:Django SimpleLazyObjectDjango SimpleLazyObject
【发布时间】:2013-07-11 11:41:41
【问题描述】:

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

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

我的意见.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)

请指导我。 谢谢。

【问题讨论】:

标签: python django django-templates django-views


【解决方案1】:

还有另一种选择,也许这个解决方案会帮助你解决它。

from django.contrib import auth

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

【讨论】:

    【解决方案2】:

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

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

    应该是

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

    如果这不能解决问题,请确保您已登录。

    【讨论】:

    • 好的,我做到了,就像你在这里写的那样。但现在我收到另一个错误:“无法分配无:“Bookmark.user”不允许空值。”
    • 您好像没有登录。你是 ?使用@login_required装饰器
    • 好的,对不起,我没有登录。但是现在当我登录时,我收到了这个错误:Cannot assign "3": "Bookmark.user" must be a "User" instance
    • 真的吗?那很奇怪。现在,试试不带 iduser = request.user 。你有同样的问题吗?
    • 好的... 做到了。谢谢!但是你能告诉我这里有什么问题吗?仅仅是因为认证吗?还有一件事,当试图点击链接或书签时,它们并没有重定向到其各自的 URL,只是返回到其用户页面。对不起,如果那太多了。但是再次感谢您!
    猜你喜欢
    • 2023-03-09
    • 2019-11-02
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多