我调用的其中一个视图适用于两个数据库表。它试图在第一个表中找到一个对象。如果找不到该对象,我会收到服务器错误(500)。我不确定代码会是什么样子,但是我想在视图中插入一些代码,如果发生服务器错误就会执行,这样我就可以告诉它尝试在第二个表中找到该对象。
当前代码:
@csrf_exempt
@login_required
def addEvent(request):
event_id = request.POST['event_id']
user = request.POST['profile']
event = Event.objects.get(event_id = event_id)
if event.DoesNotExist:
event = customEvent.objects.get(event_id = event_id)
user = Profile.objects.get(id = user)
user.eventList.add(event)
return HttpResponse(status = 200)
答案 0 :(得分:2)
由于您未在第一个表中找到记录,因此很可能会出现500错误。要解决这个问题,您只需抓住DoesNotExist
例外(提及here):
try:
obj = FooModel.objects.get(...)
except FooModel.DoesNotExist:
try:
obj = OtherModel.objects.get(...)
except OtherModel.DoesNotExist:
raise Http404
或者您可以使用shortcut:
来简化此操作try:
obj = FooModel.objects.get(...)
except FooModel.DoesNotExist:
obj = get_object_or_404(OtherModel, ...)