1

私はこれらの 3 つの機能を持っています。

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があります

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_ordershow_checkout

一般的に私がやろうとしていたのは、両方のビュー ( show_checkoutshow_order) の URL を設計することですが、うまくいきません。

問題は、上記のコードに含まれていない変数と行の間の競合order=Order.objects.get(pk=id)でしshow_orderorder.get_order_items(request)show_checkoutだから私は変数orderをに変更しshow_orderましたorders。それはすべてを修正しました。正直ミス..

4

1 に答える 1

1

問題は、上記のコードに含まれていない show_orderの変数order=Order.objects.get(pk=id)と show_checkout の行の間の競合でした。order.get_order_items(request)そのため、show_order の変数 order を orders に変更しました。それはすべてを修正しました。正直ミス..

于 2013-03-13T05:49:10.790 に答える