python - 如何设置最大数量。可以在 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"
}))
解决方案
推荐阅读
- javascript - 后端的console.log(req.body)未出现在控制台+后端更正中
- java - GameContinue() 不起作用。应该循环回到 main() 的开头
- swagger - Swashbuckle - 如何在 Schema 部分中包含参数类型
- javascript - Javascript存储来自foreach php函数的第一个值并不断重复它
- linux - 更简单的 SSH 方法来防止同时输入主机名和用户名?
- ms-office - Microsoft Office 加载项商店 - 将发布日期安排在未来
- three.js - 使用 mapbox 更新 3d 模型位置
- python - 在 Python 中访问字典对象转储中的项目
- javascript - 如何使用 js 为时间块着色?
- python - 如何在制作数组时不出现 indexerror