如何在Django中生成包含5位数字的uniquie ID



我目前正在使用Django创建一个网站,我已经让管理表单按照我的意愿运行,所以当我创建所有者Django时,它会生成一个包含特定数量数字的随机ID,并将该ID显示在所有者的名字和姓氏旁边。以下是django中使用的models.py:

class Owner(models.Model):
First_Name = models.CharField(max_length=100)
Last_Name = models.CharField(max_length=100)
email = models.CharField(max_length=100)
phone = models.IntegerField()
street_address = models.CharField(max_length=30)
Suburb = models.CharField(max_length=30)
postcode = models.IntegerField()
owner_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
def __str__(self):
return self.First_Name +" "+ self.Last_Name

class Pet_Description(models.Model):
description_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
species = models.CharField(max_length=50)
pet_name = models.CharField(max_length=50)
weight_in_kg = models.IntegerField()
height_in_cm = models.IntegerField()
gender = models.CharField(max_length=10)
age = models.IntegerField()
owner_id = models.ForeignKey(Owner, on_delete=models.CASCADE)
overweight = models.CharField(max_length=50)
healthy = models.CharField(max_length=50)
indoor_or_outdoor = models.CharField(max_length=50)
def __str__(self):
return self.pet_name
class Booking(models.Model):
booking_ID = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
date = models.DateField()
time = models.TimeField()
owner_id = models.ForeignKey(Owner, on_delete=CASCADE)
def __unicode__(self):
return self.booking_ID 

class Payment(models.Model):
payment_ID = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
payment_type = models.CharField(max_length=50)
booking_ID = models.ForeignKey(Booking, on_delete=CASCADE)
def __unicode__(self):
return self.payment_ID
class Pet_Illness(models.Model):
pet_ID = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
owner_id = models.ForeignKey(Owner, on_delete=CASCADE)
type_of_illness = models.CharField(max_length=50)
description_of_illness = models.CharField(max_length=200)
def __str__(self):
return self.type_of_illness + ": " + self.description_of_illness
class Pet_History(models.Model):
pet_history_ID = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
pet_ID = models.ForeignKey(Pet_Description, on_delete=CASCADE)
Visited_vet_before = models.CharField(max_length=50)
First_time_of_illness = models.DateField()
Special_Medication = models.CharField(max_length=50)
Medication_Description = models.CharField(max_length=50)
def __unicode__(self):
return self.pet_history_ID

您可以使用shortuuid

并在模型创建期间手动保存

这是代码,该代码将生成随机数字

import shortuuid
s = shortuuid.ShortUUID(alphabet="0123456789")
otp = s.random(length=5)

您可以在视图中存储这样的uuid。py:

# importing uuid
import uuid

# creating an instance of
# uuid object
test = uuid.uuid4()

# creating a instance of 
# Model
obj = modelName.objects.create(field_name = test)
obj.save()
通用唯一标识符(UUID(是一个128位的数字。这篇文章可能有助于更好地理解UUID

在103万亿版本-4的UUID中找到重复的概率是十亿分之一。这意味着,如果你在3266108年内"每秒"产生一个UUID,那么你的碰撞几率是000000001。

你可以使用shortuuidshortuuid

最新更新