2012-04-30 117 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

如果你知道'pk','filter(campaining = 1)'是还原剂。 – 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

你有冗余的一点点捕捉异常意味着您不必检查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/') 
+0

非常感谢你的时间,这个解释非常有帮助 – LaBE