gpt4 book ai didi

python - 在 Django 中全局设置 Decimal 选项

转载 作者:行者123 更新时间:2023-12-05 06:32:01 24 4
gpt4 key购买 nike

Python 中小数的默认舍入方法是 ROUND_HALF_EVEN。

我有一个 Django 2.0 应用需要在所有模型 DecimalFields 中使用 ROUND_HALF_UP。

我已经尝试了这个问题中给出的所有 3 个答案:

Global decimal rounding options in Django

但没有一个奏效。例如,使用第二个解决方案中给出的 apps.py 方法 - 我已确认 Decimal 的上下文已通过调用

decimal.getcontext()

设置后立即

decimal.getcontext().rounding = decimal.ROUND_HALF_UP

然后我可以通过进入 Django shell 并调用来确认这一点

import decimal
decimal.getcontext()

报告四舍五入=ROUND_HALF_UP

但是,如果我再打电话

decimal.getcontext()

在模型的保存方法中,舍入选项已恢复为 ROUND_HALF_EVEN - 这向我暗示存在不止一个上下文?

我想了解是否可以将 decimal 全局设置为 ROUND_HALF_UP,如果可以,我的代码哪里出错了?

我目前正在 django 开发服务器上运行该应用程序并使用 Python 3.6.4

最佳答案

getcontext 仅适用于当前线程,不会在执行 View 时调用。相反,您应该设置 DefaultContext在应用程序配置或您的 settings.py 中。所有其他线程将自动继承此上下文。

例如,在settings.py中添加:

DefaultContext.rounding=ROUND_HALF_UP

关于python - 在 Django 中全局设置 Decimal 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51560034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com