2012-02-11 58 views
1

我在我的views.py以下幾種觀點:Django的對象不存在

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在數據庫中,但我不斷收到錯誤對象不存在。我的代碼有什麼問題?

堆棧跟蹤說,錯誤發生在:

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

什麼對象不存在?這個錯誤指的是什麼? – Dirk 2012-02-11 22:18:06

+0

請參閱編輯... – Dean 2012-02-11 22:20:24

+0

它可能是複選框的值是一個字符串,我想象的ID是一個i​​nt/long嘗試從'value =「foo」中刪除引號「很確定仍然有效的html – 2012-02-11 22:31:16

回答

2

的問題是你得到一個字符串

objectsToBeDeleted = request.POST['imagesToBeRemoved'] 

既然您發佈的多個數據,你想要的是:

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

字符串是可迭代的,所以你遍歷每個數字,也就是說,如果你想DELE如果某個項目的ID爲345,它實際上會嘗試刪除ID爲3,4和5的項目。