1

我正在使用 Django 及其 Forms 类。

我已经创建了一个表单,forms.IntegerField我想min_value动态定义它的参数:

class BiddingForm(forms.Form):
    bidding_form = forms.IntegerField(min_value=1, help_text="€", label="Bid")

现在,它被静态设置为1. 我试图覆盖该__init__()函数并在min_value那里传递。但由于bidding_form是一个类变量,我不能min_value在其上使用生成的实例变量:

class BiddingForm(forms.Form):
    min_value = 1

    def __init__(self, min_value):
        super().__init__()
        self.min_value = min_value

    bidding_form = forms.IntegerField(min_value=min_value, help_text="€", label="Bid")

据我了解,上面的类创建了一个实例变量min_value__init__()其中只是隐藏了类变量min_value,最终导致在' min_values声明中。 由于我对 Python 和 Django 了解甚少,因此我还没有找到解决方案。 那么,如何动态定义's参数呢?1bidding_form

forms.IntegerFieldmin_value

4

2 回答 2

1

您覆盖min_value该字段:

from django.core import validators MinValueValidator

class BiddingForm(forms.Form):
    bidding_form = forms.IntegerField(help_text='€', label='Bid')

    def __init__(self, *args, min_value=None, **kwargs):
        super().__init__(self, *args, **kwargs)
        bidding_form = self.fields['bidding_form']
        bidding_form.min_value = min_value
        if min_value is not None:
            bidding_form.validators.append(MinValueValidator(min_value))
于 2021-01-09T17:00:55.303 回答
0

我不这么认为,但您可以在检查之前检查指定字段的长度if form.is_valid():。喜欢:if len(form.cleaned_data['field']) < min:

于 2021-01-09T17:03:38.813 回答