如何兑换我在django创建的优惠券代码



我在django-rest框架中创建了Coupon代码,现在我喜欢使用python脚本或任何前端方法(如html、javascript、Postman(兑换它,我没有方法、路径或逻辑来指导我如何做到这一点。

这是我的models.py文件:

from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator

class Coupon(models.Model):
code = models.CharField(max_length=50, unique=True)
valid_from = models.DateTimeField()
valid_to = models.DateTimeField()
discount = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
active = models.BooleanField()
def __str__(self):
return self.code

这是我的serializers.py文件

from rest_framework import serializers
from .models import Coupon

class CouponSerializer(serializers.ModelSerializer):
class Meta:
model = Coupon
fields = '__all__'

这是我的views.py文件

from django.shortcuts import render
from .models import Coupon
from .serializers import CouponSerializer
from rest_framework import viewsets

class CouponViewSet(viewsets.ModelViewSet):
queryset = Coupon.objects.all()
serializer_class = CouponSerializer

请提供帮助

您可以在视图集中创建一个新的操作,在那里您可以检查代码的有效性并提供适当的响应。

class CouponViewSet(viewsets.ModelViewSet):
queryset = Coupon.objects.all()
serializer_class = CouponSerializer

@action(detail=True, methods=['get'])
def redeem(self, request, pk=None):
obj = self.get_object()
// do all the checks here.
return Response(// return data what needed)

如果要发送其他数据,可以根据需要更改此自定义方法的方法。另外请注意,如果您使用此优惠券创建订单,请在最终请求中发送此优惠券,以便再次验证折扣。

您可以为视图集中的每个操作映射不同的序列化程序。

# mapping serializer into the action
serializer_classes = {
'list': PatientDischargeListSerializer,
'retrieve': PatientDischargeReadSerializer,
'create': PatientDischargeSerializer,
'update': PatientDischargeSerializer,
'partial_update': PatientDischargeSerializer,
'redeem': CustomSerializer,
}
default_serializer_class = PatientDischargeSerializer
def get_serializer_class(self):
return self.serializer_classes.get(self.action, self.default_serializer_class)
@action(detail=True, methods=['get'])
def redeem(self, request, pk=None):
serializer_class = self.get_serializer_class()
obj = self.get_object()
serializer = serializer_class(instance=obj, data=request.data)
// do all the checks here.
return Response(// return data what needed)

相关内容

  • 没有找到相关文章