gpt4 book ai didi

Django:为什么这个自定义模型字段没有按预期运行?

转载 作者:行者123 更新时间:2023-12-05 00:42:24 25 4
gpt4 key购买 nike

以下字段旨在将货币格式化为两位小数(量化)。你可以看到它返回一个 <decimal>.quantize(TWOPLACES)存储的十进制版本。但是,当我在 Django 管理员中查看此内容时,它并没有这样做。如果我输入 50到正在使用 CurrencyField() 的字段并在管理员中查看,我得到 50对比 50.00 .这是为什么?

from django.db import models
from decimal import Decimal


class CurrencyField(models.DecimalField):
"""
Only changes output into a quantized format. Everything else is the same.
"""
def __init__(self, *args, **kwargs):
kwargs['max_digits'] = 8
kwargs['decimal_places'] = 2
super(CurrencyField, self).__init__(*args, **kwargs)

def to_python(self, value):
try:
return super(CurrencyField, self).to_python(value).quantize(Decimal('0.01'))
except AttributeError:
return None

更新 : 我试过放 return 'Hello World'代替 return super(CurrencyField, self).to_python(value).quantize(Decimal('0.01'))它甚至没有在 shell 中显示“Hello World”。推出 50再次。这是否意味着当我访问一个模型的属性时 CurrencyField()它不叫 to_python() ?

最佳答案

也许您可以尝试将其添加到您的字段中:

__metaclass__ = models.SubfieldBase

另见 here .

关于Django:为什么这个自定义模型字段没有按预期运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2083591/

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