Django 使用uuid作主键

在实际开发中,我们有时需要使用UUIDField作为model的字段类型,下面简单介绍一下它的使用方法

一、作为主键使用

UUIDField作为主键使用,必须将primary_key设置为true,default也必须有默认值,这里设置为uuid.uuid4

class CloudAccount(Model):
    id = models.UUIDField(primary_key=True, max_length=LEN_LONG, default=uuid.uuid4, editable=False)
    platform = models.CharField(_("云平台"), max_length=LEN_SHORT)
    project = models.CharField(_("项目"), max_length=LEN_SHORT)
    name = models.CharField(_('名称'), max_length=LEN_NORMAL, null=True, blank=True)

有一点必须注意,default不能设置为uuid.uuid4()

id = models.UUIDField(primary_key=True, max_length=LEN_LONG, default=uuid.uuid4(), editable=False)

因为uuid.uuid4()返回的是一个确切的值,每次添加数据的时候默认值都是这个值,而主键是必须有唯一性的,所以就会报错。而uuid.uuid4为一个方法,每次添加数据时都会生成一个新值,满足需求。

二、作为非空字段, null设置为false

key = models.UUIDField(default=uuid.uuid4, null=False)

三、作为可为空的字段使用

pw = models.UUIDField(default=None, null=True, blank=True)

这里建议设置default=None

posted @   yingzi__block  阅读(1058)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2019-03-14 pytest学习--快速入门
点击右上角即可分享
微信分享提示