私信  •  关注

Ishwar Jangid

Ishwar Jangid 最近创建的主题
Ishwar Jangid 最近回复了
7 年前
回复了 Ishwar Jangid 创建的主题 » 在django中如何生成6位字符串作为主键

在你的模型中使用信号。对于创建的每个实例,都可以这样做。

def pre_save_create_order_id(sender, instance, *args, **kwargs):
    if not instance.order_id:
        instance.order_id = unique_order_id_generator(instance)


pre_save.connect(pre_save_create_order_id, sender=Order)



def random_string_generator(size = 10, chars = string.ascii_lowercase + string.digits):
    return ''.join(random.choice(chars) for _ in range(size))



def unique_order_id_generator(instance):
    new_id = random_string_generator()
    k = instance.__class__
    q = k.objects.filter(order_id = new_id).exists()
    if q:
        return unique_order_id_generator(instance)
    return new_id