from django.contrib import admin
from payment.models import Order, OrderItem, ShippingAddress
#dev_41 admin 추가
# Register your models here.
admin.site.register(ShippingAddress)
#dev_43
admin.site.register(Order)
admin.site.register(OrderItem)
#dev_43
# Create order Model
class Order(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
amount_paid = models.PositiveBigIntegerField(default=0)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self) -> str:
return f'Order - {str(self.id)}'
# Create order Items Model
class OrderItem(models.Model):
#Forign Keys
order = models.ForeignKey(Order,on_delete=models.CASCADE)
product = models.ForeignKey(Product,on_delete=models.CASCADE,null=True,blank=True)
quantity = models.PositiveBigIntegerField(default=1) #양수: PositiveBigIntegerField, 4바이트 정수 필드 (unsigned).
price = models.PositiveBigIntegerField(default=0) #
def __str__(self) -> str:
return f'Order Item - {str(self.id)}'
#dev_43
def payment_process_order(request):
if request.POST:
cart = Cart(request)
cart_products = cart.get_prods
quantiles = cart.get_quants
totals = cart.cart_total()
cart_delete = cart.delete
print(totals)
#Gether Order Info
if request.user.is_authenticated:
#logged in
user = request.user
#Create Order
create_order = Order(user=user)
create_order.amount_paid = totals
create_order.save()
#dev_44
#Add Order Items
#Get the oorder ID
order_id = create_order.pk
#Get product info
for product in cart_products():
product_id = product.id
#Get product price
if product.is_sale:
price = product.sale_price
else:
price = product.price
#Get quantity
for key,value in quantiles().items():
if int(key) == product.id:
#Create Order Item
create_order_item = OrderItem(order_id=order_id,product_id=product_id,quantity=value,price=price)
create_order_item.save()
#Delete cart item(만약 카트도 지우고 싶다면)
for key in list(quantiles().keys()):
cart_delete(key)
messages.success(request, "주문이 완료 되었습니다.")
return redirect('/')
else:
messages.success(request, "You Must be logged In To order the products")
return redirect('/login')
else:
messages.success(request, "Access denied")
return redirect('/')
{% comment %} #dev_43 {% endcomment %}
<div class="text-center">
<h3 >Total:{{totals}}원</h3>
{% comment %} <a class="btn btn-success text-center" href="{% url 'payment:payment_process_order'%}">주문</a> {% endcomment %}
<button type="submit" class="btn btn-success text-center" >주문</button>
</div>
아래와 같이 주문 버튼을 누른후

admin 으로 접속후 Order items 와 orders 컬럼 확인
