首页 > 解决方案 > Django:如何通过删除每个值前面的 Decimal( 来从查询中获取干净的数据?

问题描述

我想要一个干净的列表,但是当我运行查询时,它会在每个数字之前返回“十进制(”符号。这是我的查询

processes = ProcessInfo.objects.filter(user_rel=user_pk).order_by('-id')      
process_score = processes.filter(user_rel=user_pk).values_list('process_score', flat=True)
      process_list = list(process_score)
      print(process_list)

我得到的是:

> [Decimal('3797.00'), Decimal('0.00'), Decimal('301.00'),
> Decimal('0.00'), Decimal('144.00'), Decimal('55.00'),
> Decimal('181.00'), Decimal('0.00')]

模型:

process_score = models.DecimalField(default='0', decimal_places=2, max_digits=10, null=True, editable=False)

我如何在 js 文件中使用它:

var myChart = new Chart(ctx, {
      type: 'bar',
      data: {
           labels: {{ process_list|safe }},
           datasets: [{
               label: 'Automation Potential',
               data: {{ process_list_score|safe }},

我怎样才能摆脱 Decimal( ?我在 js 图表中使用这些数据。我只想重新调整像这样的值 '3797.00, '0.00','301.00'....

标签: pythondjango

解决方案


您可以使用json_script模板标签以 JSON 格式将数据从您的视图传递给一些 JS

{{ process_list|json_script:"process-list" }}
<script>
    const process_list = JSON.parse(document.getElementById('process-list').textContent);
</script>

JS 变量process_list现在将是一个没有“十进制”的字符串数组

然后,您可以在图表中使用此变量

new Chart(ctx, {
  type: 'bar',
  data: {
       labels: process_list,
  ...

推荐阅读