1

例外をキャッチしようとしていますが、機能しません。これは私の見解のコードです:

@login_required 
def activities_edit(request, edit):

    ActivityFormSet = modelformset_factory(Activity, can_delete=True)
    act_edit= Activity.objects.filter(campaing=1).get(pk=edit)
    try:
        if act_edit:
            if request.method == 'POST':
                formset = ActivityFormSet(request.POST, request.FILES, queryset=Activity.objects.filter(pk=edit))       
                if formset.is_valid():
                    formset.save()
                    return HttpResponseRedirect('/activities/')
            else:
                formset = ActivityFormSet(queryset=Activity.objects.filter(pk=edit))
    except act_edit.DoesNotExist:
        return HttpResponseRedirect('/activities/')

私も試していました: " except act_edit.DoesNotExist: " しかし、エラーは持続します "Activity matching query does not exist." 何か案が?

ありがとう!

4

2 に答える 2

2

try:句の本体で例外を引き起こす可能性のあるステートメントを移動する必要があります。

構文は「try: something catch stuff :」ですtry:

act_edit= Activity.objects.filter(campaing=1).get(pk=edit)
try:

する必要があります

try:
   act_edit = Activity.objects.filter(campaing=1).get(pk=edit)
于 2012-04-30T18:55:16.860 に答える
2

例外をキャッチする冗長性が少しあるということは、act_edit が空である場合は DoesNotExist が発生するため、空であるかどうかを確認する必要がないことを意味します。また、モデルにはDoesNotExistインスタンスがありません。

@login_required 
def activities_edit(request, edit):

    ActivityFormSet = modelformset_factory(Activity, can_delete=True)       
    try:
        act_edit= Activity.objects.filter(campaing=1).get(pk=edit)

        if request.method == 'POST':
            formset = ActivityFormSet(request.POST, request.FILES, queryset=Activity.objects.filter(pk=edit))       
            if formset.is_valid():
                formset.save()
                return HttpResponseRedirect('/activities/')
        else:
            formset = ActivityFormSet(queryset=Activity.objects.filter(pk=edit))
            #HttpResponse not returned error here.
    except Activity.DoesNotExist:
        return HttpResponseRedirect('/activities/')
于 2012-04-30T19:19:19.427 に答える