2012-04-30 2 views
1

Я пытаюсь поймать исключение, но не work.This это код, на мой взгляд:сопоставления запросов не существует

@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/') 

Я также пытался с: «кроме act_edit.DoesNotExist:» но ошибка сохраняется. «Запрос соответствия активности не существует». Любая идея?

Спасибо!

+0

в JavaScript ее обычно пытаются поймать, не попробовать, кроме – Evan

+0

В 'фильтр (= 1 кампания)' является reduntant, если вы знаете, 'pk'. – tuxmaul

+1

Использовать 'get_object_or_404', забыли исключения –

ответ

3

Вам необходимо переместить оператор, который может вызвать исключение в теле try:.

Синтаксис является "попробовать: что-то поймать материал:" ваш что-то выше try:

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

Должно быть

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

Спасибо !, была моя ошибка – LaBE

3

У вас есть немного избыточности catching exception означает, что вам не нужно проверять, является ли act_edit пустым, потому что если он пуст, он будет поднимать DoNotExist. Также модель имеет 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/') 
+0

Большое вам спасибо за ваше время, объяснение было очень полезным – LaBE

Смежные вопросы