付款后将布尔字段更改为 True?
change boolean field to True after Payment?
我使用 stripe Api 付款方式,我的数据库中有一个名为 ordered
的布尔值,设置为 False
我只希望它在付款后为真
这是我的 views.py:
class OrderSummary(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
order = Order.objects.get(user=self.request.user) #this is to bring the order
delivered = order.ordered
YOUR_DOMAIN = "http://127.0.0.1:8000"
checkout_session = stripe.checkout.Session.create(
payment_method_types=['card'],
metadata={
"order_id":order.id,
"order":order,
"delivered":delivered
},
mode='payment',
success_url=YOUR_DOMAIN + "/",
cancel_url=YOUR_DOMAIN + "/",
)
return JsonResponse({'id': checkout_session.id})
这是付款后的网络钩子视图:
@csrf_exempt
def stripe_webhook(request):
payload = request.body
sig_header = request.META['HTTP_STRIPE_SIGNATURE']
event = None
try:
event = stripe.Webhook.construct_event(
payload, sig_header, endpoint_secret
)
except ValueError as e:
# Invalid payload
return HttpResponse(status=400)
except stripe.error.SignatureVerificationError as e:
# Invalid signature
return HttpResponse(status=400)
if event['type'] == 'checkout.session.completed': #this is to bring the order
session = event['data']['object']
customer_email = session["customer_details"]["email"]
orders =session["metadata"]["delivered"]
orders=True
orders.save()
print(session)
# Passed signature verification
return HttpResponse(status=200)
但我遇到了这个错误
AttributeError: 'bool' object has no attribute 'save'
这是因为您不能 .save() 一个变量(这里是订单),您必须 .save() 模型,所以您必须检索 Order 对象并将其 ordered 设置为 True,然后 .save()订单对象。
您正在对一个不是您的模型对象的变量调用保存。
尝试:
Order= OrderSummary.Objects.get(id=id)
Order.Ordered=True
Order.save()
我使用 stripe Api 付款方式,我的数据库中有一个名为 ordered
的布尔值,设置为 False
我只希望它在付款后为真
这是我的 views.py:
class OrderSummary(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
order = Order.objects.get(user=self.request.user) #this is to bring the order
delivered = order.ordered
YOUR_DOMAIN = "http://127.0.0.1:8000"
checkout_session = stripe.checkout.Session.create(
payment_method_types=['card'],
metadata={
"order_id":order.id,
"order":order,
"delivered":delivered
},
mode='payment',
success_url=YOUR_DOMAIN + "/",
cancel_url=YOUR_DOMAIN + "/",
)
return JsonResponse({'id': checkout_session.id})
这是付款后的网络钩子视图:
@csrf_exempt
def stripe_webhook(request):
payload = request.body
sig_header = request.META['HTTP_STRIPE_SIGNATURE']
event = None
try:
event = stripe.Webhook.construct_event(
payload, sig_header, endpoint_secret
)
except ValueError as e:
# Invalid payload
return HttpResponse(status=400)
except stripe.error.SignatureVerificationError as e:
# Invalid signature
return HttpResponse(status=400)
if event['type'] == 'checkout.session.completed': #this is to bring the order
session = event['data']['object']
customer_email = session["customer_details"]["email"]
orders =session["metadata"]["delivered"]
orders=True
orders.save()
print(session)
# Passed signature verification
return HttpResponse(status=200)
但我遇到了这个错误
AttributeError: 'bool' object has no attribute 'save'
这是因为您不能 .save() 一个变量(这里是订单),您必须 .save() 模型,所以您必须检索 Order 对象并将其 ordered 设置为 True,然后 .save()订单对象。
您正在对一个不是您的模型对象的变量调用保存。
尝试:
Order= OrderSummary.Objects.get(id=id)
Order.Ordered=True
Order.save()