为了账号安全,请及时绑定邮箱和手机立即绑定

FloatField __init__收到了意外的关键字参数'max_value'

FloatField __init__收到了意外的关键字参数'max_value'

精慕HU 2021-03-29 19:15:12
我最近问了这个问题,并按照最初所说的解决了我的问题。以下代码有效:class FloatRangeField (FloatField):    """A FloatField constrained to a given range."""    def __init__ (self, minimum, maximum, **kwargs):        minmax = [MinValueValidator (minimum), MaxValueValidator (maximum)]        self.minimum = minimum        self.maximum = maximum        kwargs ['validators'] = minmax        FloatField.__init__ (self, **kwargs)    def deconstruct (self):        name, path, args, kwargs = super () .deconstruct ()        kwargs ['minimum'] = self.minimum        kwargs ['maximum'] = self.maximum        del kwargs ['validators']        return name, path, args, kwargsclass AffinityField (FloatRangeField):    """An affinity is a float from -1 (hate) to +1 (love)."""    def __init__ (self, **kwargs):        FloatRangeField.__init__ (self, -1.0, 1.0, **kwargs)    def deconstruct (self):        name, path, args, kwargs = super () .deconstruct ()        del kwargs ['minimum']        del kwargs ['maximum']        return name, path, args, kwargs但是,我不认为这是完整的。我是Django的新手,但是我的理解是,添加验证器会约束模型愿意保存的数据,但与此分开的是,正如此答案所表明的那样,在表单级别存在验证。如果您需要表单级别的约束,则可以将min_value和max_value传递给表单字段:myfloat = forms.FloatField(min_value=0.0, max_value=1.0)我没有任何可见的形式,但(刚开始学习!),所以我不知道是否有必要单独做到这一点,但是从它的声音我就必须要通过min_value和max_value以及验证对象。这是我的尝试:class FloatRangeField (FloatField):    """A FloatField constrained to a given range."""    def __init__ (self, minimum, maximum, **kwargs):        minmax = [MinValueValidator (minimum), MaxValueValidator (maximum)]        self.minimum = minimum        self.maximum = maximum        # Validators for the model        kwargs ['validators'] = minmax        # Arguments for the form validation        kwargs ['min_value']  = minimum        kwargs ['max_value']  = maximum这引发了一个异常:    FloatField.__init__ (self, **kwargs)TypeError: __init__() got an unexpected keyword argument 'min_value'但是根据文档,该min_value参数是预期的,因此我不知道此错误的真正含义。我以为我了解字段解构函数的原理(删除kwargs在子类中定义它们时不需要作为输入的那些东西__init__),但也许不是。我使用min_valueand的方式出了什么问题max_value?
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

看起来您混合了表单字段和模型字段。您在问题描述表格的中提供的链接FloatField

但是默认情况下FloatField,您要自定义的模型没有min_valuemax_value参数。


查看完整回答
反对 回复 2021-04-09
  • 1 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号