0

我调用的视图之一适用于两个数据库表。它试图在第一个表中找到一个对象。如果找不到对象,我会收到服务器错误 (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)
4

1 回答 1

2

您很可能会收到 500 错误,因为您没有在第一个表中找到记录。要解决这个问题,您只需要捕获DoesNotExist异常(此处提到):

try:
    obj = FooModel.objects.get(...)
except FooModel.DoesNotExist:
    try:
        obj = OtherModel.objects.get(...)
    except OtherModel.DoesNotExist:
        raise Http404

或者您可以使用快捷方式简化此操作:

try:
    obj = FooModel.objects.get(...)
except FooModel.DoesNotExist:
    obj = get_object_or_404(OtherModel, ...)
于 2013-06-17T21:02:51.527 回答