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

相关推荐
珺毅同学14 小时前
YOLO生成预测json标签迁移问题
python·yolo·json
骑士雄师15 小时前
18.4 长期记忆可修改版
python
~小先生~15 小时前
Python从入门到放弃(一)
开发语言·python
天佑木枫15 小时前
第2天:变量与数据类型 —— 让程序记住信息
python
Dust-Chasing16 小时前
Claude Code源码剖析 - Claude Code 上下文压缩机制
人工智能·python·ai
Cloud_Shy61817 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
abcy07121318 小时前
python pandas csv异步后台清洗前端优先返回成功信息
前端·python·pandas
颜酱18 小时前
LangChain使用RAG 入门:让大模型读懂你的私有文档
python·langchain
天天进步201519 小时前
Python全栈项目--校园智能宿舍管理系统
开发语言·python
测试员周周19 小时前
【AI测试智能体-面试】AI测试面试60题(附回答思路)
人工智能·python·功能测试·测试工具·单元测试·自动化·测试用例