Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:为每个新订单创建参考代码_Python_Python 3.x_Django_Django Views - Fatal编程技术网

Python Django:为每个新订单创建参考代码

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

对于我的电子商务项目,我正在尝试生成一个可理解但同时又独特的参考代码:

我正在尝试生成一个参考代码,在每次购买后,该代码包括日期、月份、年份、小时、分钟和一个随着新交易而增加的数字

DDMMYYHHMMXXX 日、月、年、小时、分钟,3位数字,从001开始,随着每个新订单的增加而增加

我该怎么做

我当前生成的代码是:

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作为计数,好的是它永远不会重复、唯一和自动递增。