首页 > 解决方案 > 如何在 Django 模型字段中获取字符串并确保它是否唯一

问题描述

这个问题在这里已经有了答案:How to create a GUID/UUID in Python (8 answers) 你的帖子已经与一个类似的问题相关联。如果此问题不能解决您的问题,请提出新问题。

8 分钟前关闭。

(私信给你)

我正在使用以下技术生成一个字符串,但我只想确定的一件事是字符串的唯一性。如果有人评估并建议是否有更好的方法来获取唯一字符串,这将是一个很大的帮助。

models.py
import random
import string

def random_string_generator(size=10, chars=string.digits):
    return ''.join(random.choice(chars) for _ in range(13))

class Orders(models.Model):
    id= models.AutoField(primary_key=True)
    token = models.CharField(max_length=13,
            default=random_string_generator,
            editable=False,
            unique=True)
    
    identifier = models.CharField(max_length=13,
                       default=random_string_generator,
                       editable=False,
                       unique=True)

标签: python-3.xdjangodjango-modelsdjango-viewsdjango-templates

解决方案


可以使用该函数检查任何对象是否具有相同的字符串,您可以使用循环来执行此操作。像这样的东西:

def random_string_generator(size=10, chars=string.digits):
    while True:
        string = ''.join(random.choice(chars) for _ in range(13))
        if (Orders.objects.filter(token=string).count() == 0 and Orders.objects.filter(identifier=string).count() == 0:
            break
    return string

推荐阅读