Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何设置优惠券的最大编号可用于Django项目_Python_Django - Fatal编程技术网

Python 如何设置优惠券的最大编号可用于Django项目

Python 如何设置优惠券的最大编号可用于Django项目,python,django,Python,Django,我已经为我的电子商务项目设置了优惠券支付系统,但我想设置此优惠券的最大使用次数最多为10次 我该怎么做 这是模型 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

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

我该怎么做

这是模型

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')
这是表格

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"
    }))

每用户10次还是每张优惠券10次?如果你想要10倍,你必须在优惠券模型中添加一个计数器,每次增加1。当优惠券使用10次时,将
active
字段更改为
False
。每个用户10次:向用户模型添加一个字段并保存使用的优惠券…@Hanseffranz如何将活动字段更改为False?我可以在模型中添加计数器,但如何调整状态。在此
如果优惠券:
状态中,您可以添加
优惠券[0]。计数器+=1
优惠券[0]。保存()。如果计数器超过10,您可以在此处添加另一个if语句,将
活动的
属性设置为False(
优惠券[0]。活动=False
)。