Django使用UUID作为主键

Django这个框架,如果你在定义模型时没有显式的指定主键,那么它会贴心的送你一个自增的id主键:

python 复制代码
class SomeModel(model.Model):
    # 下面这个 id 字段是不需要写的,django 自动附送
    # id = models.AutoField(primary_key=True)

    ...

这个 id 主键从 1 开始计数,每有一条新的数据则 +1,保证了主键不重复。

通常你用这个自增主键就够了,但是有些情况下用它又不合适。

这时用 UUID 作为主键非常合适。 UUID 是一种全局唯一标识符,通常用32位的字符串来表现,像这样:9cd0c6fa-846e-11ea-8191-94e6f7639b8c ,它可以保证全球范围内的唯一性。

方法是这样:

python 复制代码
class User(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid1, editable=False)

注意:既然这里设置了UUID,那你数据库的类型就要变为varchar类型。

相关推荐
羊小猪~~17 小时前
LLM--SFT简介
python·考研·算法·ai·大模型·llm·微调
无心水17 小时前
17、Java内存溢出(OOM)避坑指南:三个典型案例深度解析
java·开发语言·后端·python·架构·java.time·java时间处理
susu108301891118 小时前
python代码把GIF 转成视频
开发语言·python
流觞 无依18 小时前
SQLite数据库损坏修复指南——解决“database disk image is malformed”报错
jvm·数据库·sqlite
木头程序员18 小时前
关于load_data_fashion_mnist函数运行原理以及运行速度慢解决方案
人工智能·python·深度学习·d2l
林姜泽樾18 小时前
python入门第六课,其他字符串格式化和input
开发语言·python·pycharm
yunpeng.zhou18 小时前
深度理解agent与llm之间的关系、及mcp与skill的区别
人工智能·python·ai
智算菩萨18 小时前
【Pygame】第14章 摄像机系统与游戏视口控制技术
python·游戏·pygame
小镇学者19 小时前
【python】 macos 安装ffmpeg 命令行工具
python·macos·ffmpeg
电商API&Tina19 小时前
【京东item_getAPI 】高稳定:API 、非爬虫、不封号、不掉线、大促稳跑
大数据·网络·人工智能·爬虫·python·sql·json