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):
#此处剩余代码
这是我的模型的样子。每当用户订购时。 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): #此处剩余代码