朋友您好,我需要帮助,
我是python和Django的新手
这次,我正在构建我的应用程序,并且尝试使用on_delete=models.PROTECT
,它可以正常工作,但是我想替换任何消息的模板ProtectedError
。
我怎样才能做到这一点?
我有这样的事情:
grupos模型
class grupos(models.Model):
nombre_grupo = models.CharField(max_length=100)
nombre_puerto = models.ForeignKey(puerto, on_delete=models.PROTECT)
def __unicode__(self):
return self.nombre_grupo
def __str__(self):
return self.nombre_grupo
如您所见,这里有一个依赖项,如果我创建了
puerto
,它不会让我删除那个puerto
没问题,并且可以正常工作,但是我收到了模板错误,我想要一个msg而不是它。这是我的puerto删除视图:
波多黎各views.py
def delete(request, id):
# I want the message here..... (such as messages.warning or something)
note = get_object_or_404(puerto, pk=id).delete()
messages.error(request, 'This puerto has been deleted.')
return redirect('/puertot')
例如,我想要类似
messages.warning(request, 'You can't delete this because it's being used by grupos')
模板错误:
/ delete / 59 /(“无法删除某些模型实例
'puerto',因为它们是通过受保护的外键引用的:
'grupos.nombre_puerto'“,]>)
我试图弄清楚如何解决这个问题,但毫无头绪...
我怎样才能做到这一点?
谢谢...!
最佳答案
对于异常问题,请使用try / except。
from django.db.models import ProtectedError
def delete(request, id):
try :
note = get_object_or_404(puerto, pk=id).delete()
messages.error(request, 'This puerto has been deleted.')
except ProtectedError:
messages.warning(request, "You can't delete this because it's being used by grupos")
return redirect('/puertot')
关于python - Django-on_delete = models.PROTECT无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41373603/