Python ';QuerySet';对象没有';不支持项目删除错误
我正在尝试按索引删除QuerySet中的项。我可以使用Python ';QuerySet';对象没有';不支持项目删除错误,python,django,Python,Django,我正在尝试按索引删除QuerySet中的项。我可以使用print q\u set[code\u id-1]显示查询集的项目,但不能使用del q\u set[code\u id-1]删除它。我想永久删除该项目,而不是排除该项目 我得到这个错误: TypeError at /lessons/customcode/5/delete 'QuerySet' object doesn't support item deletion views.py ... def customcode_vie
print q\u set[code\u id-1]
显示查询集的项目,但不能使用del q\u set[code\u id-1]
删除它。我想永久删除该项目,而不是排除该项目
我得到这个错误:
TypeError at /lessons/customcode/5/delete
'QuerySet' object doesn't support item deletion
views.py
...
def customcode_view(request):
global q_set
try:
u = User.objects.get(username=request.user)
except:
return render(request,"login_required.html",{})
q_set = customcode.objects.filter(user=u)
if request.method == "POST":
form = CustomcodeForm(request.POST)
if form.is_valid():
cc = form.save(commit=False)
cc.user = u
cc.save()
return HttpResponseRedirect('#BOTTOM')
else:
form = CustomcodeForm()
return render(request, "customcode.html" , {'q_set':q_set,'form':form,})
def deletecode(request,code_id):
code_id = int(code_id)
del q_set[code_id - 1] #this is the problem
return redirect('customcode_view')
...
models.py
...
class customcode(models.Model):
user = models.ForeignKey(User)
name = models.CharField(blank=False,max_length=250)
sourcecode = models.TextField(blank=False)
def __unicode__(self):
return self.name
...
要永久删除该条目,您不希望从queryset(这只是数据的一个易失性视图)中删除该项,而是从数据库中删除该项:
q_set[code_id - 1].delete()
嗯
dtk要永久删除条目,您不想从queryset(这只是数据的一个易失性视图)中删除该项,而是要从数据库中删除该项:
q_set[code_id - 1].delete()
嗯
dtk如果您只想删除列表中的条目,而不想删除数据库中的行,请尝试以下操作:
help = q_set[:]
q_set = q_set[:code_id - 1]
q_set.append(help[code_id:])
如果只想删除列表中的条目,而不想删除数据库中的行,请尝试以下操作:
help = q_set[:]
q_set = q_set[:code_id - 1]
q_set.append(help[code_id:])
你想从查询集中还是从数据库中删除它?+1我假设他想从数据库中删除它,只是基于“我想永久删除该项目,而不是过滤排除该项目”这句话,但这可能是过早的o.ODo你想从查询集或数据库中删除它吗?+1我假设他想从数据库中删除它,只是基于“我想永久删除该项目,而不是排除该项目”的措辞,但这可能还为时过早。Othis给了我一个错误:`'customcode'对象没有属性'remove'`你能确保你调用了
delete()
而不是remove()
?它工作了!。。。很抱歉,我错误地使用了remove(),太好了。如果这确实符合您的要求(即永久修改db),那么如果您接受了答案就太好了。您可能还想了解一下编码约定。至少,您的类名希望以大写字母开头;)请保持好奇。这给了我一个错误:`'customcode'对象没有属性'remove'`你能确保你调用了delete()
而不是remove()
?它工作了!。。。很抱歉,我错误地使用了remove(),太好了。如果这确实符合您的要求(即永久修改db),那么如果您接受了答案就太好了。您可能还想了解一下编码约定。至少,您的类名希望以大写字母开头;)保持好奇心。