Объект Джанго не существует - PullRequest
1 голос
/ 12 февраля 2012

У меня есть следующее представление в моих 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 - флажки на странице 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>

Итак, я знаю, что идентификаторы, возвращенные из формы, находятся в базе данных, но я продолжаю получать объект ошибки не существует.Что не так с моим кодом?

Трассировка стека говорит о том, что ошибка происходит:

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

1 Ответ

2 голосов
/ 12 февраля 2012

Проблема в том, что вы получаете строку с

objectsToBeDeleted = request.POST['imagesToBeRemoved']

Поскольку вы размещаете несколько данных, вам нужно:

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

Строки являются итеративными, поэтому вы перебираете каждую из цифр, то есть, если вы хотите удалить элемент с идентификатором 345, он фактически попытается удалить элементы с идентификаторами 3, 4 и 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...