2013-07-12 9 views
6

は、私はTypeError例外を取得:ジャンゴSimpleLazyObject

int() argument must be a string or a number, not '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) 

私を導いてください。 ありがとうございます。

+0

が重複する可能性の(http://stackoverflow.com/questions/15878860/int-argument-must-be-a- [INT()の引数は文字列または数値ではなく、 'SimpleLazyObject' でなければなりません]文字列または数字ではない単純なオブジェクト) –

答えて

12

request.userデフォルトではSimpleLazyObjectです。これを解決するには、

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

が、これはそれを解決しない場合は、あなたがログインしていることを確認してください。

+1

ここで書いたように、私はしました。しかし、今私は別のエラーが発生しています。 "割り当て不可:" Bookmark.user "はnull値を許可していません。 – Tchec

+2

はあなたがログインしていないようです。あなたは? '@ login_required'デコレータを使用します – karthikr

+2

これは私がログインしていないと申し訳ありませんが、今私はこのエラーが出ています: '3を割り当てることはできません:" Bookmark.user "は" User "インスタンスでなければなりません – Tchec

1

別のオプションがあり、この溶液であってもよい

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

する必要がありますお手伝いを致します修理する。

from django.contrib import auth 

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