2013-03-12 95 views
1

我有这三个函数,我已经安排他们这样走,他们我如何处理属性错误?

def show_order(request,id): 
    order = Order.objects.get(pk=id) 
    if request.method == 'POST': 
     postdata = request.POST.copy() 
     if postdata['submit'] == 'Remove': 
      order.remove_from_order(request) 
     if postdata['submit'] == 'Update': 
      order.update_order(request) 
     if postdata['submit'] == 'checkout': 
      """once confirmed order, click checkout and redirect to checkout_form""" 
      return HttpResponseRedirect(urlresolvers.reverse('checkout',kwargs={'id':order.id})) 
    .... 

def show_checkout(request,id): 
    if request.method == 'POST': 
     resto = Restaurant.objects.get(pk=id) 
     postdata = request.POST.copy() 
     form = forms.CheckoutForm(request.POST,postdata) 
     if form.is_valid(): 
      """create order after validating form""" 
      order_created = create_order(request,resto) 
      order_number = order_created.id 
      if order_number: 
       request.session['order_number'] = order_number 
      if postdata['submit'] == 'place order': 
       reciept_url = urlresolvers.reverse('checkout_reciept') 
       return HttpResponseRedirect(reciept_url) 
    ...... 

def create_order(request,obj): 
    """create new online_order containing each orderitem instance,save order and empty the order.""" 
    anon_user = User.objects.get(id=settings.ANONYMOUS_USER_ID) 
    resto = Restaurant.objects.get(pk=obj.id) 
    orders = Order() 

    checkout_form = forms.CheckoutForm(request.POST,instance=orders) 
    checkout = checkout_form.save(commit=False) 

    checkout.created_by = anon_user 
    checkout.modified_by = anon_user 
    checkout.restaurant = resto 
    checkout.status = Order.SUBMITTED 
    checkout.save() 

    if checkout.pk: 
     """if the order save suceeded""" 
     for ci in cart_items: 
      """create order for each order_item""" 
      ........ 

这里的网址

url(r'^your_order/(?P<id>\d+)/$',show_order,name="order_index"), 
url(r'^checkout/(?P<id>\d+)/$',show_checkout,name="checkout"), 

我得到AttributeError'Order' object has no attribute 'get_order_items'当我尝试从重定向到show_checkout

什么一般我试图做的是两个意见的设计网址(show_checkout,),但那是行不通的出。

的问题是,可变order=Order.objects.get(pk=id)之间在和show_checkout线order.get_order_items(request)我没有在代码包括上述的冲突。所以我将中的变量更改为orders。修复了一切。诚实的错误。

+0

你从哪里得到这个'get_order_items'?我试图在你的代码中找到它 – catherine 2013-03-12 11:23:31

+0

它的一个例外django生成..但它是不是在代码 – 2013-03-12 11:27:49

+2

你也可以发布你的完整追溯错误 – catherine 2013-03-12 11:29:51

回答

1

问题是,show_order中的变量order=Order.objects.get(pk=id)与show_checkout中的行order.get_order_items(request)之间存在冲突,我没有将其包含在上面的代码中。所以我将show_order中的变量顺序更改为订单。修复了一切。诚实的错误..