django - 主键的 django uuid 或 hashid 字段?以及如何在生成的 ID 前加上“cust_”
问题描述
我目前正在使用django-shortuuidfield在Customer模型上生成唯一的 UUID 主键,如下所示
class Customer(models.Model):
customer_id = ShortUUIDField()
user = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.CharField(max_length=255, blank=False)
这保证了该customer_id
场在空间和时间上是唯一的。但是,这会生成一个类似于的 id B9fcKdMDHbwKCBoADjbNyA
,我想在它前面加上前缀,cust_
使它像这样cust_B9fcKdMDHbwKCBoADjbNyA
。如何在不进行多次数据库调用的情况下实现这一目标?
我还研究了django-hashid-field,它支持开箱即用的前缀,但这并不能保证 UUID,并且在更大范围内,我们可能会遇到不受欢迎的唯一包含失败的问题。
对此有什么想法吗?让我知道...
解决方案
可能是一个陈旧的线程,但我最近自己遇到了这个问题。我最终只是分叉和修改了 ShortUUIDField 模块以可选地包含前缀和后缀。我不得不承认,这是一项很糟糕的工作,但我想我会为后代分享。
https://github.com/nick-fournier/django-customshortuuidfield
像这样使用:
class Business(models.Model):
id = CustomShortUUIDField(primary_key=True, prefix="biz_")
推荐阅读
- javascript - NextJS:动态 router.pathname 不显示路径,而是显示文件名 - 如何获取路径中的单词?
- python - Azure 自托管代理运行 pytest
- c# - 在类库中使用 API 接口,在 API 接口中使用类库?
- advanced-installer - 高级安装程序:在完成查询之前运行 sql 查询脚本
- python-3.x - 如何将 mongoengine.Document 的继承添加到现有类中
- reactjs - 在反应中带来关于过滤器的最大数据记录
- javascript - 使用 querySelector 按 ID 定位特定表中的行
- android - 使用内容解析器 Android 打开文件
- reactjs - 从导航组件跳过指向主要内容的链接
- file-io - 使用 FTP 获取服务器本地时间