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类型。

相关推荐
梁正雄18 小时前
1、python基础语法
开发语言·python
2***656319 小时前
数据库操作与数据管理——Rust 与 SQLite 的集成
数据库·rust·sqlite
ituff19 小时前
微软认证考试又免费了
后端·python·flask
梁正雄20 小时前
2、Python流程控制
开发语言·python
Eric.Lee202121 小时前
ubuntu 安装 Miniconda
linux·运维·python·ubuntu·miniconda
无心水21 小时前
【Python实战进阶】1、Python高手养成指南:四阶段突破法从入门到架构师
开发语言·python·django·matplotlib·gil·python实战进阶·python工程化实战进阶
李剑一1 天前
Python学习笔记1
python
Salt_07281 天前
DAY 19 数组的常见操作和形状
人工智能·python·机器学习
a***13141 天前
vscode配置django环境并创建django项目(全图文操作)
vscode·django·sqlite
无心水1 天前
【Python实战进阶】2、Jupyter Notebook终极指南:为什么说不会Jupyter就等于不会Python?
python·jupyter·信息可视化·binder·google colab·python实战进阶·python工程化实战进阶