python - 当我尝试删除对象时出现 "list out of index range"错误

标签 python django list orm

这是我的 delete_category 函数:

def delete_category(request, id):
    user = request.user
    category = Category.objects.get(pk=id)
    category.user.remove(user)
    return HttpResponseRedirect(reverse('auth_profile', args=[user.username]))

这是我的 category_detail 函数:

def category_detail(request, category_name):
    user = request.user
    category = Category.objects.filter(name=category_name, user__username=user)[0]
    return render_to_response("category_detail.html", { "category":category}, context_instance=RequestContext(request))

这是 category_detail.html:

        <p>{{category.name}}</p>
        <a href="{% url 'delete_category' category.id %}">delete</a>

如果我有多个类别,我可以在点击删除链接时删除。但是,如果我只有一个类别,则会出现此错误:

列表索引超出范围

最佳答案

改变

category = Category.objects.filter(name=category_name, user__username=user)[0]

通过

categories = Category.objects.filter(name=category_name, user__username=user)
category = None
if categories:
   category = categories[0]

另请参阅如何正确使用 QuerySet 对象 here

关于python - 当我尝试删除对象时出现 "list out of index range"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20382692/

相关文章:

Python 正则表达式拆分保留拆分模式字符

python - 递归扫描文件并删除python中的空目录

python - execute(sql) 后调用fetchall() 是不是第二次读取数据?

python - 从命令行执行 Django Shell 命令

list - 自定义展开返回累加器

javascript - csrfToken 仅在页面刷新后有效 - Django

python - Django 查询格式化日期时间输出

javascript - Django 表单 - 为不同的选择使用不同的预定义日期范围

python - 如何将包含符号和数字的字符串转换为 float 或整数列表?

java - 如何使用 Java 8 从对象列表中获取最小值和最大值