2012-08-29 2 views
0

음식 배달 웹 사이트를 구축 중입니다. 현재 모든 설정이 완료되었지만 각 유형의 음식에 대한 주문 총계를 집계 한 관리자 페이지를 작성 중입니다.전자 상거래 사이트의 모든 주문 항목 계산하기

"location"속성에는 6 가지 드롭 오프 포인트가 있습니다. 그리고 나는 3 번 배달 시간을 내 보낸다. 나는 각 배달 시간/장소에 대한 모든 개별 음식 품목을 계산하려고합니다. 난 장고를 사용하여 이것을하는 방법을 모르겠습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

"orderitems"모델에서 실제 "주문"모델을 분리했습니다.

class Order(models.Model): 
    # each individual status 
    SUBMITTED = 1 
    PROCESSED = 2 
    SHIPPED = 3 
    CANCELLED = 4 

    # set of possible order statuses 
    ORDER_STATUSES = ((SUBMITTED,'Submitted'), (PROCESSED,'Processed'), 
         (SHIPPED,'Shipped'), (CANCELLED,'Cancelled'),) 

    # order info 
    date = models.DateTimeField(auto_now_add=True) 
    status = models.IntegerField(choices=ORDER_STATUSES, default=SUBMITTED) 
    last_updated = models.DateTimeField(auto_now=True) 
    transaction_id = models.CharField(max_length=20) 


    #user info 
    user = models.ForeignKey(User, null=True) 
    full_name = models.CharField(max_length=20, blank=True) 

    # contact info 
    email = models.EmailField(max_length=50) 
    phone = models.CharField(max_length=20) 

    # Drop point info 
    location = models.CharField(max_length=50) 

    #time of the drop info 
    time = models.IntegerField() 

    # billing information 
    billing_name = models.CharField(max_length=50) 
    billing_address_1 = models.CharField(max_length=50) 
    billing_address_2 = models.CharField(max_length=50, blank=True) 
    billing_city = models.CharField(max_length=50) 
    billing_state = models.CharField(max_length=2) 
    billing_country = models.CharField(max_length=50) 
    billing_zip = models.CharField(max_length=10) 

    def __unicode__(self): 
     return 'Order #' + str(self.id) 

OrderItem에 :

class OrderItem(models.Model): 
    product = models.ForeignKey(Food) 
    quantity = models.IntegerField(default=1) 
    price = models.DecimalField(max_digits=7,decimal_places=2) 
    order = models.ForeignKey(Order) 

답변

0

annotate and Count을 시도해보십시오

orders = orders.annotate(num_items=Count('orderitem_set')) 

for order in orders: 
    print order.pk, order.num_items 
관련 문제