欢迎访问宙启技术站
智能推送

使用Rest_Framework中的DecimalField()将浮点数值转化为固定小数位数的字符串

发布时间:2023-12-29 11:37:39

Rest_Framework中的DecimalField()是一个字段类,用于序列化和反序列化浮点数值。它可以将浮点数值转化为固定小数位数的字符串。

以下是使用DecimalField()的示例:

假设我们有一个模型类Product,其中包含一个价格字段price,类型为浮点数。

from decimal import Decimal
from rest_framework import serializers

class ProductSerializer(serializers.ModelSerializer):
    price = serializers.DecimalField(max_digits=6, decimal_places=2)

    class Meta:
        model = Product
        fields = ['price']

在上面的代码中,我们在ProductSerializer中定义了一个DecimalField()来表示价格字段。我们将max_digits设置为6,表示最多可以有6位数(包括整数和小数位数),decimal_places设置为2,表示小数位数为2位。

接下来,我们可以使用ProductSerializer将数据序列化为固定小数位数的字符串:

product_data = {'price': 19.99}
serializer = ProductSerializer(data=product_data)
serializer.is_valid()  # 验证数据是否有效
# 输出结果: True

serialized_data = serializer.data
print(serialized_data['price'])
# 输出结果: '19.99'

以上示例中,我们创建了一个ProductSerializer实例,并传入包含价格信息的数据字典。然后我们调用is_valid()方法来验证数据的有效性,如果数据有效,我们可以通过serializer.data获取序列化后的数据字典,其中的价格字段被转化为了固定小数位数的字符串 '19.99'。

这就是使用Rest_Framework中的DecimalField()将浮点数值转化为固定小数位数的字符串的示例。