我尝试使用下面的代码创建DecimalField
子类
class PositiveMoneyField(DecimalField):
def __init__(self, verbose_name=None, name=None, **kwargs):
super().__init__(self,
verbose_name, name,
max_digits=9, decimal_places=2,
validators=[MinValueValidator(Decimal(0.0)), ],
**kwargs
)
但它给了我这个错误:
TypeError: __init__() got multiple values for argument 'max_digits'
感谢任何帮助。
谢谢,
埃里克
答案 0 :(得分:0)
似乎DecimalField中的 init 需要不同的调用。试试这个:
class PositiveMoneyField(DecimalField):
def __init__(self, verbose_name=None, name=None, **kwargs):
kwargs.update(
{'validators': [MinValueValidator(Decimal(0.0)), ]})
super(PositiveMoneyField, self).__init__(verbose_name, name, max_digits=3, decimal_places=2, **kwargs)
答案 1 :(得分:0)
在检查其他django字段为SlugField后,我找到了解决方案:
class PositiveMoneyField(DecimalField):
def __init__(self, *args, max_digits=9, decimal_places=2, **kwargs):
kwargs.update({'validators': [MinValueValidator(Decimal(0.01)), ]})
super().__init__(*args, max_digits=max_digits, decimal_places=decimal_places, **kwargs)