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



我不知道如何为django上的错误返回一条简单的消息,例如,我需要在删除此OBJECT:时返回PROTECT error

我的视图:

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)

谢谢!

您的视图应该类似于:

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表单,因此可以将错误消息传递给上下文字典。

最新更新