DECIMAL类型字段获取数据变为字符串

2022-02-21 00:00:00 python django django-rest-framework

问题描述

在我的表格中:

我的折扣类型是小数:

我在表中的数据:

但是为什么当我在API中获取数据时,会出现字符串?

我使用Django和Django睡觉框架作为后台。


belong_product: "实体服务器"
ctime: "2018-04-11T15:41:15.744959+08:00"
desc: ""
discount: "0.005"
id: 1
is_enable: false
max_count: 5
min_count: 0
name: "基数折扣第一阶"
uptime: "2018-04-11T15:41:15.745226+08:00"

我的ListAPI视图:

class DiscountItemByUserOwnCountListAPIView(ListAPIView):
    serializer_class = DiscountItemByUserOwnCountSerializer
    permission_classes = [IsSuperAdmin]
    pagination_class = CommonPagination
    def get_queryset(self):
        return DiscountItemByUserOwnCount.objects.all()

我的型号:

class DiscountItemByUserOwnCount(models.Model):
    name = models.CharField(max_length=16, help_text="名称")
    desc = models.CharField(max_length=512, null=True, blank=True, help_text="描述")
    min_count = models.IntegerField(help_text="范围的最小数目")
    max_count = models.IntegerField(help_text="范围的最大数目")  # 最小~最大 组成范围
    discount = models.DecimalField(max_digits=4, decimal_places=3, default=0.000, unique=True,
                                   help_text="折点")  # 折点: 0.001
    belong_product = models.CharField(max_length=16, help_text="所属产品(DISCOUNT_PRODUCT_TYPE中去选择)")

    is_enable = models.BooleanField(default=False, help_text="是否启用")

    ctime = models.DateTimeField(auto_now_add=True)
    uptime = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name
    def __unicode__(self):
        return self.name

    class Meta:
        ordering = ['min_count', '-id']

解决方案

Django睡觉框架中默认的小数表示为字符串。要禁用此行为,请将以下内容添加到您的settings.py文件中:

REST_FRAMEWORK = {
    'COERCE_DECIMAL_TO_STRING': False,
    # Your other settings
    ...
}

请参阅documentation中的详细信息。

相关文章