python-3.x - 如何在 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)
解决方案
可以使用该函数检查任何对象是否具有相同的字符串,您可以使用循环来执行此操作。像这样的东西:
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
推荐阅读
- java - 在 JTable 过滤器中应用和调用 2 个过滤器
- php - 搜索域名可用性 laravel 5.4
- java - HtmlUnit java.lang.NoSuchFieldError: 实例
- vb.net - Vb.net 在下一个例程中使用 List (Of String) 随着时间的推移变慢
- docker - 'docker -v' 绑定挂载在 Windows 10 上不再工作
- c# - 在 ASP.NET Core 中显示几秒钟的验证摘要消息
- purescript - 我如何处理某些新类型分组
- angular - 将特定服务扩展到 Angular 4 中的子类
- email - 多个用户访问的单个电子邮件帐户
- python - 如何找到变量列表的索引位置?