【问题标题】:Django: Creating a Reference Code for each new orderDjango:为每个新订单创建参考代码
【发布时间】:2020-10-08 03:29:40
【问题描述】:

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

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

DDMMYYHHMMXXX 日、月、年、时、分,3位数字,以001开头,每次新订单递增。

我该怎么做?

我当前生成的代码是:

def create_ref_code():
    return ''.join(random.choices(string.ascii_lowercase + string.digits, k=6))

模型.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)

【问题讨论】:

    标签: python python-3.x django django-views


    【解决方案1】:

    为此,您可以扩展 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)
    

    【讨论】:

    • 嗨,我已经更新了我的问题,我正在尝试整合你的答案,但我不能
    • 我现在明白了你想要达到的目标,但是有没有办法在每次生成 create_ref_code 时增加 digit 的计数
    • 对不起,我不知道根据您的问题增加 btw 的任何方法,您也必须在一天结束时重置它。
    • 每次调用或运行create_ref_code 时,我可以让digit 增加1,而不是让它们重置。例如最初是 000,第一次调用它变成 001 等等?
    • 如果是这种情况,那么您唯一能做的就是扩展保存方法,然后使用 id 作为计数,好在它永远不会重复、唯一且自动递增。
    【解决方案2】:

    用 UUID-4 代替 DDMMYYHHMMXXX

    代码:

    import uuid
    uuid.uuid4()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-10
      • 2018-11-22
      • 2020-10-30
      • 2014-01-20
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2015-10-15
      相关资源
      最近更新 更多