在我的表中:
我的折扣类型是DECIMAL:
我的数据在表中:
但是为什么当我在API中获取数据时,会得到字符串呢?
我使用Django和Django REST框架作为后端。
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"
我的列表API视图:
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']
3条答案
按热度按时间vwkv1x7d1#
Django REST框架中默认的十进制表示是字符串。要禁用此行为,请在您的 settings.py 文件中添加以下内容:
请参阅文档中的详细信息。
kx7yvsdv2#
它是一个字符串,因为否则你会得到舍入误差。这可以很容易地用Python shell看到:
另外请注意,JSON没有小数,只有整数和浮点数。
wljmcqd83#
Decimal字段的默认行为是REST_FRAMEWORK中的字符串,以覆盖我们可以使用的整个应用程序
但如果您想为一个字段覆盖它,您可以执行以下操作
默认情况下,
coerce_to_string
是True
。