Django SimpleLazyObject
Posted
技术标签:
【中文标题】Django 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)
请指导我。 谢谢。
【问题讨论】:
int() argument must be a string or a number, not 'SimpleLazyObject' 的可能重复项 【参考方案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
真的吗?那很奇怪。现在,试试不带 id
的 user = request.user
。你有同样的问题吗?
好的... 做到了。谢谢!但是你能告诉我这里有什么问题吗?仅仅是因为认证吗?还有一件事,当试图点击链接或书签时,它们并没有重定向到其各自的 URL,只是返回到其用户页面。对不起,如果那太多了。但是再次感谢您!以上是关于Django SimpleLazyObject的主要内容,如果未能解决你的问题,请参考以下文章