Excel数据不排序类型decimal.Decimal

hfyxw5xn  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(168)

我有一个视图,我在其中导出数据,数字数据,但当我排序数据时,它没有得到排序,因为Excel不认为值是数字数据。我如何将它们转换为数字数据,以便以数字格式显示数据,并使排序工作。我有一个函数,它可以获得数据,这里是它的外观。

def get_output_value(self, key, value, neutral=None):
        display = value
        if value is None and not user.is_active:
            return '-', '-'

        if value is None:
            return f"${Decimal('.00')}", f"${Decimal('.00')}"

        if isinstance(value, Decimal):
            return f"${intcomma(value.quantize(Decimal('.00')))}",f"${intcomma(display.quantize(Decimal('.00')))}"

        return value, display

    def get_data(self):
            data = []

        for key in self.header_keys:
            value = getattr(neutral, str(key), '-')
            val, display = self.get_output_value(key, value, user)
            values_list.append({'value': val, 'display': display})
       

        data.append({'title': user.__str__(), 'value_row': values_list})

      return data
gtlvzcf8

gtlvzcf81#

应该将数据 Package 在float或int类类型中
例如:

def get_output_value(self, key, value, neutral=None):
        display = value
        if value is None and not user.is_active:
            return 0, 0

        if value is None:
            return float(f"{Decimal('.00')}"), float(f"{Decimal('.00')}")

        if isinstance(value, Decimal):
            return float(f"{intcomma(value.quantize(Decimal('.00')))}"), float(f"{intcomma(display.quantize(Decimal('.00')))}")

        return float(value), display

"也许更好的方法是"

def get_output_value(self, key, value, neutral=None):
        display = value
        if value is None and not user.is_active:
            return 0, 0

        if value is None:
            return Decimal('.00'), Decimal('.00')

        if isinstance(value, Decimal):
            return intcomma(value.quantize(Decimal('.00'))), intcomma(display.quantize(Decimal('.00')))

        return float(value), display

相关问题