FloatField\uyu init\uu获得意外的关键字参数“max_value”

2024-09-28 05:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近问了this question并按照最初的说明解决了我的问题。以下代码有效:

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,但我的理解是,添加验证器会约束模型愿意保存的数据,但与此分开,作为this answer indicates,在表单级别有验证。在

If you need constraint on form level you can pass min_value and max_value to form field:

myfloat = forms.FloatField(min_value=0.0, max_value=1.0)

我还没有任何可见的表格(刚开始学习!)因此,我不知道是否有必要单独执行此操作,但是从它的声音来看,我必须传递min_value和{}以及验证器对象。以下是我的尝试:

^{pr2}$

这引发了一个异常:

    FloatField.__init__ (self, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'min_value'

但是according to the documentationmin_value参数是预期的,所以我不知道这个错误的真正含义。在

我想我理解了字段解构器的原理(从kwargs中删除那些在子类的__init__中定义它们时不需要作为输入的东西),但可能不是。在

我使用min_valuemax_value有什么问题?在


Tags: topathnameselfinitvaluedefargs
1条回答
网友
1楼 · 发布于 2024-09-28 05:23:13

看起来你混合了form fields和{a2}。您在您的问题描述表单的FloatField中提供的链接。在

但您尝试定制的模型的^{}默认情况下没有min_value和{}参数。在

相关问题 更多 >

    热门问题