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

时间:2021-05-20 04:32:52

标签: python django

我目前正在使用 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

3 个答案:

答案 0 :(得分:0)

你可以像这样在views.py中存储uuid:

# 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()

答案 1 :(得分:0)

你可以使用shortuuid

并在模型创建过程中手动保存

这是代码,这个代码会产生随机数

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

答案 2 :(得分:0)

通用唯一标识符 (UUID) 是一个 128 位的数字。 this article might help in better understanding UUID

<块引用>

在 103 万亿个版本 4 UUID 中找到重复项的概率是十亿分之一。这意味着如果你“每秒”产生一个 UUID,持续 3,266,108 年,那么你的碰撞几率是 0.000000001。

你可以使用 shortuuid shortuuid

相关问题