Django使用save新增一条数据之后如何获取自增id

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django使用save新增一条数据之后如何获取自增id相关的知识,希望对你有一定的参考价值。

如果我这样新建一条数据之后,如何在view里获得这条数据里自增的id

参考技术A back = models.Back.objects.get(bookname=bookname)    # 查询你保存的那本书的记录
print(back.id)    # 打印出你要的新增记录的id值

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

【中文标题】如何在 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新增一条数据之后如何获取自增id的主要内容,如果未能解决你的问题,请参考以下文章

Django讲课笔记09:使用QuerySet新增和更新数据

MySQL中如何获取下一条插入的自增ID

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

如何在 django 中获取 .save() 的查询?

Python django model 插入新增一条数据,得到create返回主键值 id

django 内置“信号”机制和自定义方法