子类化 DecimalField

Subclassing DecimalField

我正在尝试创建一个 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'

感谢任何帮助。

谢谢,

埃里克

似乎 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)

在检查其他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)