主键的 django uuid 或 hashid 字段?以及如何在生成的 ID 前加上前缀 "cust_"
django uuid or hashid field for primary keys? and how to prefix the generated ids with say "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
字段对于 space 和时间是唯一的。但是,这会生成一个类似于 B9fcKdMDHbwKCBoADjbNyA
的 id,我想在它前面加上 cust_
以使其像这样 cust_B9fcKdMDHbwKCBoADjbNyA
。如何在不进行多次数据库调用的情况下实现这一目标?
我还研究了 django-hashid-field,它支持开箱即用的前缀,但这并不能保证 UUID,并且在更大范围内,我们可能 运行 进入 unique contain 不希望出现的失败问题.
对此有什么想法吗?让我知道...
可能是一个过时的线程,但我最近才遇到这个问题。我最终只是分叉和修改 ShortUUIDField 模块以选择性地包含前缀和后缀。我不得不承认这是一项艰巨的工作,但我想我会为后代分享。
https://github.com/nick-fournier/django-customshortuuidfield
像这样使用:
class Business(models.Model):
id = CustomShortUUIDField(primary_key=True, prefix="biz_")
我目前正在使用 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
字段对于 space 和时间是唯一的。但是,这会生成一个类似于 B9fcKdMDHbwKCBoADjbNyA
的 id,我想在它前面加上 cust_
以使其像这样 cust_B9fcKdMDHbwKCBoADjbNyA
。如何在不进行多次数据库调用的情况下实现这一目标?
我还研究了 django-hashid-field,它支持开箱即用的前缀,但这并不能保证 UUID,并且在更大范围内,我们可能 运行 进入 unique contain 不希望出现的失败问题.
对此有什么想法吗?让我知道...
可能是一个过时的线程,但我最近才遇到这个问题。我最终只是分叉和修改 ShortUUIDField 模块以选择性地包含前缀和后缀。我不得不承认这是一项艰巨的工作,但我想我会为后代分享。
https://github.com/nick-fournier/django-customshortuuidfield
像这样使用:
class Business(models.Model):
id = CustomShortUUIDField(primary_key=True, prefix="biz_")