如何将POST方法传递的参数与Django rest框架Model进行比较并生成自定义响应



我正在设计基于基本Django rest框架的应用程序,我需要将Postman中通过POST方法传递的外部参数与数据库中的Coupon代码进行比较,并生成自定义响应,如"此代码已兑换/验证"或";这是无效的优惠券/代码">

这是我的Model.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

这是我的views.py文件:

from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Coupon
from .serializers import CouponSerializer
from rest_framework import viewsets
class CouponViewSet(viewsets.ModelViewSet):
queryset = Coupon.objects.all()
serializer_class = CouponSerializer

@api_view(['POST'])
def coupon_redeem(request):
if request.method =='POST':
serializer = CouponSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

这是我的Serializer.py文件

from rest_framework import serializers
from .models import Coupon

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

如果可能的话,请帮忙,谢谢。

IN您的post方法u可以过滤所需的对象,如:

if serializer.is_valid():
coup=Coupon.objects.filter(code=serializer.data['code'],active=True).exists()
if(coup=="NULL"):
return Response("This is invalid coupon/code",status=status.HTTP_400_BAD_REQUEST)
else:
return Response("This is valid code",status=status.HTTP_200_OK)

最新更新