Django DRF计算字段检查

问题描述

我要检查从前端到价格表的计算值是否正确。

例如;通过给出“销售价格”来增加此折扣,提前预订折扣将减少为CostPrice。 CostPRice和SalesPrice之间的差给出了profiRate。 webFakePrice是通过计算在网络上假的价格的salesPrice * webFakePriceRate来计算的。我想检查这些FrontEnd是否正确计算。我找不到它的关键字。既然一个记录中有多个记录,该如何循环?

Model.py

salesPrice = models.FloatField (blank = True,null = True)
costPrice = models.FloatField (blank = True,null = True)
commissionRate = models.FloatField (blank = True,null = True)
discountRate = models.FloatField (blank = True,null = True)
earlyBookingRate = models.FloatField (blank = True,null = True)
totalCommission = models.FloatField (blank = True,null = True)
profitRate = models.FloatField (blank = True,null = True)
webFakePriceRate = models.FloatField (blank = True,null = True)
webFakePrice = models.FloatField (blank = True,null = True)

view.py

def create (self,request,* args,** kwargs):
    many = True if isinstance (request.data,list) else False
    serializer = PriceSerializer (data = request.data,many = many)
    if serializer.is_valid ():
        serializer.save()
    else:
        return Response (serializer.errors,status = status.HTTP_400_BAD_REQUEST)
    return Response (serializer.data,status = status.HTTP_201_CREATED)

解决方法

我是通过检入序列化程序来完成的。

例如:

def age_restriction(dob):
    today = date.today()
    age = today.year - dob.year - ((today.month,today.day) < (dob.month,dob.day))
    if (not(20 < age < 30)):
        raise serializers.ValidationError("You are no eligible for the job")
    return dob
class EligibilitySerializer(serializers.Serializer):
    email = serializers.EmailField()
    name = serializers.CharField(max_length=200)
    date_of_birth = serializers.DateField(validators=[age_restriction])

来源:https://medium.com/@MicroPyramid/custom-validations-for-serializer-fields-django-rest-framework-44feabc1d06b

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...