【发布时间】:2020-05-13 19:27:30
【问题描述】:
我正在尝试在我的数据库中为用户创建一个随机字符串。这是无密码登录的一部分。
所以我有一个应该生成随机字符串的字段。但我刚刚发现它没有。它实际上一遍又一遍地生成相同的字符串。也许每 5-10 分钟它会在几分钟内生成一个新字符串。
我的模型看起来像这样。
class Random(models.Model):
user = models.OneToOneField('CustomUser', on_delete=models.CASCADE)
random = models.CharField(max_length=25, default=uuid.uuid4().hex[:25].upper(), unique=True)
created_at = models.DateTimeField(auto_now_add=True)
即使它生成一个 25 长的字符串,它也会一遍又一遍地复制它。
由于我有唯一的 true,这导致下一次调用创建字符串是不可能的,因为它不是唯一的。
为什么每次都是独一无二的?
【问题讨论】:
-
default=uuid.uuid4()这里uuid.uuid4()在服务器首次执行并定义模型时评估一次。 -
@sumpen 有什么理由跳过 uuid4 的一部分吗?
-
@funnydman 我不明白你的意思?
-
@sumpen 为什么需要
uuid.uuid4().hex[:25]?它看起来很奇怪,我不建议这样做。 -
@funnydman 我会用什么代替?
标签: django python-3.x django-models