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