我正在尝试为用户购买我的产品之一时生成一个随机兑换代码。
问题是,一旦随机码存在,GetRandomRedeemCode函数生成一个新的代码,Django就不会将其保存到DB中。
这是每次下新订单时都会调用的代码:
def CompleteOrder(request):
order_qs = Purchase.objects.filter(user=request.user, ordered=False)
if order_qs:
specific_order = order_qs[0]
for order in specific_order.product_purchased.all():
order.item.purchased_by.add(request.user)
specific_order.ordered = True
specific_order.total_price = specific_order.get_total()
*specific_order.redeem_code = GetRandomRedeemCode()*
specific_order.save()
return redirect("OrderCompletedSuccessURL")
这是GetRandomRedeemCode()函数,调用它来创建一个随机码,并检查该随机码是否已经存在于数据库中,即唯一性。
def GetRandomRedeemCode():
random_num = str(random.randint(10000000,99999999))
if Purchase.objects.filter(redeem_code=random_num).exists():
GetRandomRedeemCode()
else:
return random_num
1条答案
按热度按时间yhived7q1#
你不返回递归调用:
不过,在这里最好使用
while
循环: