朋友您好,我需要帮助,

我是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/

10-11 19:37