2012-02-11 24 views
1

存在しません:Djangoのオブジェクトは、私は私のviews.pyに次のビューを持っている

def MoveSucessfulEntries(request): 
    if request.method == 'POST': 
     objectsToBeDeleted = request.POST['imagesToBeRemoved'] 
     for objects in objectsToBeDeleted: 
      print objects 
      image = Image.objects.get(id=objects) 
      SucessfulImage(emailAddress=image.emailAddress, image=image.image, caption=image.caption).save() 
     return render_to_response('images/selectedSucessful.html') 
    else: 
     images = Image.objects.all() 
     return render_to_response('images/deleteUnsucessfulEntries.html', {'images': images}) 

imagesToBeRemovedはそうのように生成されたデータベース内の画像のIDを持っているHTMLページ上のチェックボックスです

<form method="POST" action="/image/selectSucessful"> 
    {% if images %} 
     {% for image in images %} 
      <input type="checkbox" name="imagesToBeRemoved" value="{{image.id}}" /> <image src="../media/{{image.image}}"> <br> 
     {%endfor%} 
     <input type="submit" value="Select" /> 
    {% else %} 
     <p>No images are available.</p> 
    {% endif %} 
</form> 

私は、フォームから返されたIDがデータベースにありますが、私はエラーオブジェクトが存在しないことを知っています。私のコードで何が間違っていますか?あなたが望むものを使用すると、複数のデータを掲載しているので

objectsToBeDeleted = request.POST['imagesToBeRemoved'] 

image = Image.objects.get(id=objects) 
+1

どのオブジェクトが存在しませんか?エラーとはどのような行ですか? – Dirk

+0

編集を参照してください... – Dean

+0

チェックボックスの値が文字列であり、私が想像するIDがint/longである可能性があります。 'value =" foo "'から引用符を削除してみてください。 –

答えて

2

問題は、あなたが文字列を取得しているされています

スタックトレースがエラーがで起こっていることを述べています:

objectsToBeDeleted = request.POST.getlist('imagesToBeRemoved') 

文字列は反復可能です。つまり、削除する場合は各数字を繰り返します。 idが345のアイテムの場合、3、4、5のIDを持つアイテムを実際に削除しようとします。

関連する問題