我有一个Django项目来实现折扣码。模型如下:
class CouponCode(models.Model):
max_usage = models.PositiveSmallIntegerField()
max_usage_per_user = models.PositiveSmallIntegerField(default=1)
code = CharField(max_length=10, unique=True)
discount_percent = models.PositiveSmallIntegerField(default=0, validators=MaxValueValidator(100)])
max_discount_amount = models.PositiveIntegerField(default=0)
is_active = models.BooleanField(default=True)
start_date = models.DateTimeField(null=True, blank=True)
end_date = models.DateTimeField(null=True, blank=True)
minimum_price = models.PositiveBigIntegerField(default=0)
class UsedCode(models.Model):
customer = models.PositiveBigIntegerField(verbose_name='customer id')
coupon = models.ForeignKey(CouponCode, on_delete=models.PROTECT)
order_id = models.PositiveIntegerField()
@classmethod
def has_reached_max_usage_for_user(cls, coupon, user):
usages = cls.objects.filter(coupon=coupon, customer=user).count()
if usages < coupon.max_usage_per_user:
return False
return True
@classmethod
def has_reached_max_usage(cls, coupon):
usages = cls.objects.filter(coupon=coupon).count()
if usages < coupon.max_usage:
return False
return True
字符串
每次使用优惠券代码创建订单时,都会创建UsedCode
对象。我想实现一个功能,如果订单被取消,优惠券代码可以重复使用。我宁愿不删除对象,这样我就可以跟踪数据。
1条答案
按热度按时间i1icjdpr1#
如果您不想删除对象,您可以添加额外的文件,如:
字符串
如果订单取消,则将可重用设置为True
然后统计没有取消的订单
型