52.Django(장고) - ecommerce 프로젝트 - 쇼핑몰 - 고객 주문처리

JungSik Heo·2024년 12월 11일

1. payment\admin.py

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)

2. payment\admin.py

#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)}'

3.payment\views.py

#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('/')

4.cart\cart_summary.html

 {% 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 컬럼 확인

profile
쿵스보이(얼짱뮤지션)

0개의 댓글