python - FloatField __init__ 得到了一个意外的关键字参数“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
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, kwargs
class 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)
def deconstruct (self):
name, path, args, kwargs = super () .deconstruct ()
kwargs ['minimum'] = self.minimum
kwargs ['maximum'] = self.maximum
del kwargs ['validators']
del kwargs ['min_value']
del kwargs ['max_value']
return name, path, args, kwargs
这会引发异常:
FloatField.__init__ (self, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'min_value'
但是根据文档,该min_value
参数是预期的,所以我不知道这个错误的真正含义。
kwargs
我以为我理解了字段解构器的原理(从那些在子类中定义它们时不需要作为输入的东西中删除__init__
)但也许不是。
我使用min_value
和的方式有什么问题max_value
?
解决方案
看起来你混合了表单字段和模型字段。您在问题描述表格中提供的链接FloatField
。
但是您尝试自定义的模型默认情况下FloatField
没有参数。min_value
max_value
推荐阅读
- node.js - 如何使用 pg.pool 在 koajs 的单个请求中从两个数据库中获取
- html - 将条件格式放入 HTMLBody
- javascript - How to insert the value of input to another inputs in JS?
- php - Symfony 4 - 两个防火墙导致 ERR_TOO_MANY_REDIRECTS
- java - 替换“for”循环以提高性能
- matlab - 带有 hgtransform 的 linkprop 对象
- asp.net-core - Microsoft.EntityFrameworkCore 没有 PropertyBuilder 的方法 IsOptional()
- python - Python - Beautifulsoup | ValueError:不支持或无效的 CSS 选择器:“
我试图从 fareham.gov.uk 网页上抓取一个应用程序,每次我尝试它都会返回一个错误而不是参考号。有人可以帮我解决这个问题吗?我是网络抓取的新手,每当我尝试用谷歌搜索修复时,都没有任何效果。
错误:
Traceback (most recent call last): File
- node.js - 如何在不登录的情况下在 gcp 上部署 Nodejs 项目
- regex - vbscript 正则表达式,在两个字符串之间替换