在你的模型中使用信号。对于创建的每个实例,都可以这样做。
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