0

私が呼び出すビューの 1 つは、2 つのデータベース テーブルで動作します。最初のテーブルでオブジェクトを見つけようとします。オブジェクトが見つからない場合は、サーバー エラー (500) が発生します。コードがどのようになるかはわかりませんが、サーバー エラーが発生した場合に実行されるコードをビューに挿入して、2 番目のテーブルでオブジェクトを検索するように指示できるようにしたいと考えています。

現在のコード:

@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

Most likely you are getting 500 error because you are not finding a record in the first table. To fix that, you just have to catch the DoesNotExist Exception (Mentioned here):

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

or you can simplify this by using a shortcut:

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