django - 促销代码 - 优惠券代码 - 折扣发生器

时间:2012-04-25 07:04:29

标签: django cart discount coupon

我正在尝试为我已经拥有的购物车创建促销代码。我希望它很简单,例如键入100off以获得100美元的折扣,我收到一条错误,说“全局名称'PromoCode'未定义”。

models.py

class PromoCode(ModelForm):
        code = models.FloatField(max_length=15)
        discount = models.FloatField(max_length=15)

views.py

def addtocart(request, prod_id):
        if (request.method == 'POST'):
                form = CartForm(request.POST)
                if form.is_valid():
                        newComment = form.save()
                        newComment.session = request.session.session_key[:20]
                        newComment.save()
                        return HttpResponseRedirect('/products/' + str(newComment.product.id))
        else:
                form = CartForm( {'name':'Your Name', 'session':'message', 'product':prod_id} )

        return render_to_response('Products/comment.html', {'form': form, 'prod_id': prod_id})

def delItem(request, prod_id):
        addtocart = get_object_or_404(Cart, pk = prod_id)
        prod_id = addtocart.product.id
        addtocart.delete()
        return HttpResponseRedirect('/userHistory/')


    def userHistory(request):
            promo = PromoCode.objects.filter(code = code_from_the_form)
            userCart = Cart.objects.filter(session = request.session.session_key[:20])
            totalCost = 0
            for item in userCart:
                    print item
                    totalCost += item.quantity * item.product.prodPrice * 1.06
            return render_to_response('Products/history.html', {'userCart':userCart, 'totalCost' : totalCost})

1 个答案:

答案 0 :(得分:0)

添加一个包含两个字段的PromoCode模型:代码和折扣。然后,您可以在管理员中添加几个促销代码。

在表单中,只需添加促销代码字段,在提交时,检查代码是否与您的任何PromoCode对象匹配并应用折扣。

(也许还有一些javascript来动态检查代码。我会在这里和那里添加一些检查以确保你的折扣在0到1(“0.5”)之间,如果你只是想要倍增如果它是一个百分比,那么在0和100之间。只要确保你不会犯错误,如果我必须实施它,那将是我的恐惧: - )