【问题标题】:Django DRF calculated fields checkDjango DRF 计算字段检查
【发布时间】:2020-08-17 19:43:02
【问题描述】:

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

例如;通过给出销售价格来添加折扣,提前预订折扣降低到 CostPrice。 CostPRice 和 SalesPrice 之间的差异给出了 profiRate。 webFakePrice 通过计算 salesPrice * webFakePriceRate 来计算网络上的虚假价格。我想检查这些 FrontEnd 是否计算正确。我找不到它的关键字。由于一条记录有多条,我应该如何循环?

模型.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)

【问题讨论】:

    标签: python django django-rest-framework backend calculated-columns


    【解决方案1】:

    我通过签入序列化程序来做到这一点。

    例如:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-08
      • 2010-12-11
      • 2012-01-26
      • 2018-07-19
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 2016-11-07
      相关资源
      最近更新 更多