如何在 django 中的 save() 后捕获数据库中的所有异常?

Posted

技术标签:

【中文标题】如何在 django 中的 save() 后捕获数据库中的所有异常?【英文标题】:How to catch all exception in database after save() in django? 【发布时间】:2013-10-08 10:12:31 【问题描述】:

我想将这些错误消息返回到 html 表单并显示此表单的问题所在。有解决方案吗?或者我应该使用原始 SQL 查询吗?感谢您的建议。

例如:

models.py:

class GeneticCharacter(models.Model):
    StrainNo=models.CharField(max_length=10,primary_key=True)
    StrainName=models.CharField(max_length=10)
    SourceNo=models.IntegerField()
    ESBL=models.CharField(max_length=9,blank=True)
    AEM=models.CharField(max_length=12,blank=True)
    PMQR=models.CharField(max_length=15,blank=True)
    ISeq=models.CharField(max_length=12,blank=True)
    Replicon=models.CharField(max_length=10,blank=True)
    MLST_type=models.CharField(max_length=10,blank=True)
    PLG_type=models.CharField(max_length=2,blank=True)
    IsPat=models.BooleanField()

views.py

...
obj=GeneticCharacter()
obj.ESBL="a"*20
obj.AEM="a"*20
obj.save()
...

如何捕获所有异常?

【问题讨论】:

哪些错误消息..? 如模型中的CharField字符串过长 你能说得更具体点吗?能给我们一些代码吗? 【参考方案1】:

我猜你想要一个 ModelForm。这将负责您模型的错误处理。查看https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#modelform

【讨论】:

是的!这正是我要找的!非常感谢

以上是关于如何在 django 中的 save() 后捕获数据库中的所有异常?的主要内容,如果未能解决你的问题,请参考以下文章

Django,调用 super() 后如何在 save() 方法中更新模型?

Django:如何覆盖 form.save()?

如何从 Django 中的表单中捕获错误?

在Django admin中保存时捕获异常?

在 django 模型自定义 save() 方法中,你应该如何识别一个新对象?

django(12)信号