首页 文章

匹配查询不存在

提问于
浏览
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/')

我也在尝试:“除了act_edit.DoesNotExist:”但错误仍然存在“活动匹配查询不存在” . 任何的想法?

谢谢!

2 回答

  • 3

    您需要移动可能导致 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)
    
  • 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/')
    

相关问题