我收到了错误消息,
TypeError at /save/ int() argument must be a string or a number, not 'SimpleLazyObject'
在执行以下表单时。
View .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)
我以为我出错了,因为我在
传递了链接bookmark, created = Bookmark.objects.get_or_create(
user=request.user,
link=link
)
但我不知道如何修复它。 我该如何解决?
最佳答案
可能的原因是您正在设置 user = request.user
,其中 request.user 不是真正的 User 对象,而是一个 SimpleLazyObject 实例。参见 django: Purpose of django.utils.functional.SimpleLazyObject?了解更多详情,但使用 request.user.id
应该可以解决您的问题。
关于django - int() 参数必须是字符串或数字,而不是 'SimpleLazyObject',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878860/