Python Django:为每个新订单创建参考代码
对于我的电子商务项目,我正在尝试生成一个可理解但同时又独特的参考代码: 我正在尝试生成一个参考代码,在每次购买后,该代码包括日期、月份、年份、小时、分钟和一个随着新交易而增加的数字 DDMMYYHHMMXXX 日、月、年、小时、分钟,3位数字,从001开始,随着每个新订单的增加而增加 我该怎么做 我当前生成的代码是:Python Django:为每个新订单创建参考代码,python,python-3.x,django,django-views,Python,Python 3.x,Django,Django Views,对于我的电子商务项目,我正在尝试生成一个可理解但同时又独特的参考代码: 我正在尝试生成一个参考代码,在每次购买后,该代码包括日期、月份、年份、小时、分钟和一个随着新交易而增加的数字 DDMMYYHHMMXXX 日、月、年、小时、分钟,3位数字,从001开始,随着每个新订单的增加而增加 我该怎么做 我当前生成的代码是: def create_ref_code(): return ''.join(random.choices(string.ascii_lowercase + string.d
def create_ref_code():
return ''.join(random.choices(string.ascii_lowercase + string.digits, k=6))
model.py
class Order(models.Model):
ref_code = models.CharField(max_length=20, blank=True, null=True)
ordered_date = models.DateTimeField()
def __str__(self):
return self.user.username
这是我已经达到的程度,但我不知道如何增加每一个新订单的数量
def create_ref_code():
now = datetime.now()
code = now.strftime("%y%m%d%H%M%S")
print(code)
count = + 1
digit = str(count).zfill(3)
my_code = (code, digit)
return ''.join(my_code)
为此,您可以扩展save方法并检索所有订单计数,还可以使用类似的方法在该计数上填充前导零
str(1).zfill(3)
这将创建001字符串输出,您需要字符串格式的输出来压缩数据,因此无需再次将其转换为整数
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
count = ***retrieve you count of that orders using query*** + 1
digit = str(count).zfill(3)
self.reference_code = your logic to create reference code
更新:
你不必像那样递增计数
def create_ref_code():
now = datetime.now()
"""
'make query to count all todays order here'
count = Order.objects.filter(filter argument by date).count() + 1
"""
code = now.strftime("%y%m%d%H%M%S")
digit = str(count).zfill(3)
my_code = (code, digit)
return ''.join(my_code)
为此,您可以扩展save方法并检索所有订单计数,还可以使用类似的方法在该计数上填充前导零
str(1).zfill(3)
这将创建001字符串输出,您需要字符串格式的输出来压缩数据,因此无需再次将其转换为整数
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
count = ***retrieve you count of that orders using query*** + 1
digit = str(count).zfill(3)
self.reference_code = your logic to create reference code
更新:
你不必像那样递增计数
def create_ref_code():
now = datetime.now()
"""
'make query to count all todays order here'
count = Order.objects.filter(filter argument by date).count() + 1
"""
code = now.strftime("%y%m%d%H%M%S")
digit = str(count).zfill(3)
my_code = (code, digit)
return ''.join(my_code)
请尝试UUID-4,而不是DDMMYYHHMXXX 代码:
import uuid
uuid.uuid4()
请尝试UUID-4,而不是DDMMYYHHMXXX 代码:
import uuid
uuid.uuid4()
嗨,我更新了我的问题,我正在尝试整合您的答案,但我现在无法理解您想要达到的目的,但是否有办法每次生成
创建参考代码时增加数字的计数对不起,我不知道任何增加btw的方法根据您的问题,您也必须在一天结束时重置该值也可以。每次调用或运行create\u ref\u code
时,我可以让数字增加1,而不是让它们重置。例如,最初它是000,第一次调用它变成001等等?如果是这样,那么你唯一能做的就是扩展save方法,然后使用id作为计数,好的是它不会重复、唯一和自动递增。嗨,我更新了我的问题,我正在尝试整合您的答案,但我现在无法理解您想要达到的目的,但是否有办法每次生成创建参考代码时增加数字的计数对不起,我不知道任何增加btw的方法根据您的问题,您也必须在一天结束时重置该值也可以。每次调用或运行create\u ref\u code
时,我可以让数字增加1,而不是让它们重置。例如,最初它是000,第一次调用它变成001等等?如果是这种情况,那么您唯一能做的就是扩展save方法,然后使用id作为计数,好的是它永远不会重复、唯一和自动递增。