如何为DJANGO上的PROTECT字段返回消息错误

2024-09-30 08:30:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道如何为django上的错误返回简单消息,例如,我需要在删除此对象时返回保护错误:

我的观点:

    def delete_notafiscal(request, notafiscal_id):
        notafiscal = NotaFiscal.objects.get(id=notafiscal_id)
        context={'object':notafiscal,'forms':''}
        try:
            if request.method =="POST":
                notafiscal.delete()
                return HttpResponseRedirect(reverse("controles:notasfiscais"))
            
        except ProtectedError as e:
            print("erro",e)
        
        return render(request,'controles/notafiscal_confirm_delete.html',context)

我的模板

    <form method="post">{% csrf_token %}
        <p>Você irá deletar "{{ object }}"?</p>
        <input type="submit" value="Confirm">
    </form>

型号

    class NotaFiscal(models.Model):
        nome = models.CharField(max_length=50)
        documento = models.FileField(upload_to='uploads/notafiscal/')
      
    class Item(models.Model):
        id_item = models.AutoField(primary_key=True)
        id_notafiscal = models.ForeignKey(NotaFiscal, on_delete=models.PROTECT, blank=True, null = True)

谢谢


Tags: formidtruereturnobjectmodelsrequest错误
1条回答
网友
1楼 · 发布于 2024-09-30 08:30:07

您的观点应该是:

def delete_notafiscal(request, notafiscal_id):
    try:
        notafiscal = NotaFiscal.objects.get(id=notafiscal_id)
        context={'object':notafiscal,'forms':'', 'error': ''}
        if request.method =="POST":
            notafiscal.delete()
            return HttpResponseRedirect(reverse("controles:notasfiscais"))
    
    # NotaFiscal will throw a DoesNotExist exception if the result does not exist
    except NotaFiscal.DoesNotExist:
        context['error'] = 'NotaFiscal does not exist'
        
    except ProtectedError as e:
        context['error'] ='An error occured'
    
    return render(request,'controles/notafiscal_confirm_delete.html',context)

虽然我不知道ProtectedError是在哪里定义的,但是由于您没有使用django表单,所以可以将错误消息传递到上下文字典

相关问题 更多 >

    热门问题