Django对象不存在

1 投票
1 回答
977 浏览
提问于 2025-04-17 12:51

我在我的 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 页面上的复选框,它们的 ID 对应数据库里的图片,这些 ID 是这样生成的:

<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 个回答

2

问题在于你得到的是一个字符串,内容是:

objectsToBeDeleted = request.POST['imagesToBeRemoved']

因为你在发送多个数据,所以你想要的是:

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

字符串是可以逐个处理的,也就是说,如果你想删除一个ID为345的项目,它实际上会尝试删除ID为3、4和5的项目。

撰写回答