Django:如何生成唯一的订单 ID

Django: How to generate unique order id

这是我的模型的样子。每当用户订购时。 django提供的order id很简单。就像 1,2,3 ..... 100.

class UserOrder(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='orders', 
           on_delete=models.CASCADE)
    cart = models.ForeignKey(Cart, related_name="orders", on_delete=models.CASCADE, null=True, 
           blank=True)
    date = models.DateTimeField(default=datetime.now)
    total_price = models.IntegerField(null=True, blank=True)
    note = models.TextField(null=True, blank=True)
    cancel_reason = models.TextField(null=True, blank=True)
    cancelled = models.BooleanField(default=False)
    confirmed = models.BooleanField(default=False)

    def __str__(self):
        return self.user.username 

你的问题没有明确定义,但我想我理解你的问题,你需要一个不简单的id(查找字段)。

您可以使用 uuid,并将此 uuid 用于视图集中的所有查找,而不是 django 按顺序创建的 id。 像这样的东西 lookup_field = 'uuid' 在视图中。

import uuid

class UserOrder(models.Model):
     uuid = models.UUIDField(default=uuid.uuid4, unique=True, db_index=True, editable=False)

在此处阅读有关 uuid 的更多信息 https://docs.python.org/3/library/uuid.html#uuid.uuid4

尝试使用 django-random-id-model 运行 pip 安装 django-random-id-model 在你的 django models.py 文件中从 django-random-id-model 导入 RandomIDModel 然后将 RandomIdModel 添加到您的模型 class,如果是:

class 用户订单(RandomIdModel): #此处剩余代码