首页 > 解决方案 > 如何设置最大数量。可以在 Django 项目中使用优惠券

问题描述

我已经为我的电子商务项目设置了优惠券支付系统,但我想设置一个最大数量。此优惠券的使用次数最多为 10 次。

我怎么做?

这是models.py

class Coupon(models.Model):
    code = models.CharField(max_length=15,unique=True)
    amount = models.DecimalField(decimal_places=2, max_digits=100)
    valid_from = models.DateTimeField(blank=True, null=True)
    valid_to = models.DateTimeField(blank=True, null=True)
    active = models.BooleanField(default=True)

    def __str__(self):
        return self.code

这是views.py

class AddCouponView(View):
    def post(self, *args, **kwargs):
        now = timezone.now()
        form = CouponForm(self.request.POST or None)
        if form.is_valid():
            try:
                code = form.cleaned_data.get('code')
                order = Order.objects.get(
                    user=self.request.user, ordered=False)
                coupon_qs = Coupon.objects.filter(code__iexact=code, valid_from__lte=now,
                                                  valid_to__gte=now,active=True)
                order_coupon = Order.objects.filter(coupon=coupon_qs.first(), user=self.request.user)

                if order_coupon:
                    messages.error(self.request, "You can't use same coupon again")
                    return redirect('core:checkout')
                if coupon_qs:
                    order.coupon = coupon_qs[0]
                    order.save()
                    messages.success(self.request, "Successfully added coupon")
                    return redirect('core:checkout')
                else:
                    messages.error(self.request, "Coupon Does not Exists")
                    return redirect('core:checkout')

            except ObjectDoesNotExist:
                messages.info(self.request, "You do not have an active order")
                return redirect('core:checkout')

这是forms.py

class CouponForm(forms.Form):
    code = forms.CharField(widget=forms.TextInput(attrs={
        'class': 'form-control',
        'placeholder': 'Promo code',
        'aria-label': "Recipient's username",
        'aria-describedby': "basic-addon2"
    }))

标签: pythondjango

解决方案


推荐阅读