我有这段代码:
try:
hotel.objects.get(id=id).delete()
messages.success(request, 'Deleted')
except:
car.objects.get(id=id).delete()
messages.success(request, 'Deleted')
except:
person.objects.get(id=id).delete()
messages.success(request, 'Deleted')
except:
messages.error(request, 'Error')
我会尝试删除hotel
或car
。它适用于此方法,但我需要再删除一个model
,如果我尝试删除不在此处的model
,我想要Error
。但我只能有一个except
,否则会给我以下错误:
SyntaxError:默认'except'必须是最后一个
我怎样才能让它发挥作用?
答案 0 :(得分:1)
首先,您的语法不正确。您不能在同一级别中拥有多个except
块,每个块都会捕获不同代码块的异常。为了正确起见,它应该是:
try:
hotel.objects.get(id=id).delete()
messages.success(request, 'Deleted')
except:
try:
car.objects.get(id=id).delete()
messages.success(request, 'Deleted')
except:
try:
person.objects.get(id=id).delete()
messages.success(request, 'Deleted')
except:
messages.error(request, 'Error')
但这不是一个好的代码风格。如果你有更多的模型要删除,你最终会有一个很长的代码链。我建议有一个模型列表,然后循环它并尝试逐个删除:
models = [hotel, car, person]
for model in models:
try:
model.objects.get(id=id).delete()
messages.success(request, 'Deleted')
break
except:
pass