使用随机生成的人类大小的唯一id创建模型实例

2024-05-29 09:38:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个模型,有一个随机的,人类大小的,唯一的关键领域。我们打算用它来让人脑将id与另一台计算机联网并调用数据

我所拥有的:

def make_code():
    numbers = "".join(random.choice(string.digits) for x in range(4))
    letters = "".join(random.choice(string.ascii_lowercase) for x in range(2))
    return numbers + letters

class PinRecord(models.Model):
    pin = models.CharField(max_length=16, primary_key=True)
    data = models.TextField(blank=False, null=False)
    created = models.DateTimeField(auto_now_add=True)

    @classmethod
    def create_uniq(cls, action, data):
        created = False
        while not created:
            pin, created = cls.objects.get_or_create(pin=make_code(), defaults={'data':data})
        return pin.pin

有没有更好的方法来创建uniq

现在,有一个小机会,它循环了很长一段时间,特别是如果PinRecords没有得到适当的清理或流量高于预期。另一个版本将尝试次数限制在有限的范围内,除了中指错误之外,我们没有任何东西可以提供给用户

对于这个随机的、唯一的关键问题,推荐的解决方案似乎是uuid,但用户会反对写下并重新键入uuid


Tags: infalsefordatastringmakemodelsdef

热门问题