我对python django中的随机字符串有一个问题。
我已经创建了一个django模型
class Post(models.Model):
slug = models.SlugField(unique=True,blank=True)
title = models.CharField(max_length=200)
description = models.TextField()
def save(self, *args, **kwargs):
str_ran = "abcdefghijklmnopqrstuvwxyz"
slug = ""
for i in range(5) :
slug += random.choice(str_ran)
self.slug = slug
super(Post, self).save(*args, **kwargs)
但有时这会有一些错误,因为段塞字段不是唯一的python随机不是随机的唯一字符串。
我该怎么办?你有没有建议随机使用这些字符串,以确保它是唯一的?
-
您可以在数据库中创建uniq索引,并在写入数据库时缓存错误,并获得冲突
-
您可以使用(UUID+矿渣(。UUID是根据当前时间生成的,它允许garanti唯一性https://docs.python.org/3/library/uuid.html
您应该使用uuid而不是random。
Python的uuid模块提供了一个符合RFC 4122的实现,以生成唯一标识符:
import uuid
slug = str(uuid.uuid4())
如果你想避免使用短划线(-
(,你也可以使用十六进制表示:
slug = uuid.uuid4().hex