int()参数必须是字符串或数字,而不是“SimpleLazyObject” [英] int() argument must be a string or a number, not 'SimpleLazyObject'
问题描述
/ save / int()参数中的TypeError必须是字符串或数字,而不是
'SimpleLazyObject'
执行以下窗体时
views.py
def bookmark_save_page(request):
如果请求.method =='POST':
form = BookmarkSaveForm(request.POST)
如果form.is_valid():
#创建或获取链接
link,dummy = Link。 object.get_or_create(
url = form.cleaned_data ['url']
)
#创建或获取书签
书签,已创建= Bookmark.objects.get_or_create(
user = request.user,
link = link
)
#更新书签标题
bookmarks.title = form.cleaned_data ['title']
#i f书签正在更新,清除旧标签列表。
如果没有创建:
bookmark.tag_set.clear()
#创建新的标签列表
tag_names = form.cleaned_data ['tags']。split()
对于tag_names中的tag_name:
标签,dummy = Tag.objects.get_or_create(name = tag_name)
bookmark.tag_set.add(tag)
#将书签保存到数据库。
bookmark.save()
return HttpResponseRedirect(
'/ user /%s /'%request.user.username
)
else:
form = BookmarkSaveForm()
variables = RequestContext(request,{
'form':form
})
返回render_to_response('bookmark_save.html',变量)
我以为我有错误,因为我传递了
书签,已创建= Bookmark.objects.get_or_create(
user = request.user,
link = link
)
但是我不知道如何解决它。
我如何解决?
可能的原因是你设置 user = request.user
,其中request.user不是真正的User对象,而是SimpleLazyObject实例。请参阅 django:django.utils.functional.SimpleLazyObject的目的? / a>有关更多详细信息,但使用 request.user.id
应该可以解决您的问题。
I got, following Error messages,
TypeError at /save/ int() argument must be a string or a number, not 'SimpleLazyObject'
While executing following form.
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?
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屋!