代码之家  ›  专栏  ›  技术社区  ›  Eric Acevedo

子类化DecimalField

  •  3
  • Eric Acevedo  · 技术社区  · 7 年前

    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'
    

    感谢您的帮助。

    谢谢

    2 回复  |  直到 7 年前
        1
  •  2
  •   Eric Acevedo    7 年前

    在检查其他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)
    
        2
  •  0
  •   kingdaemon    7 年前

    初始化

    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)