0

我有一个表单,其中包含一个名为 level 的选择字段,允许在 0-3 之间选择我想要动态“限制”的选项。这可能吗?

视图的伪代码将包含如下内容:

form = new instance of myform
allowed_level = 2
form.level maximum value =< allowed_level
4

1 回答 1

3

当然,您可以在创建表单时动态设置验证标准:(请注意:这不是一个完整的示例,因为我不确定您的设置)

class MyForm(forms.Form):

    level = ...

    def __init__(self, *args, **kwargs, allowed_level=None):
        self.allowed_level = allowed_level
        super(MyForm, self).__init__(*args, **kwargs)

    def clean_level(self):
        data = self.cleaned_data['level']
        # Here you can play with what you want to allow
        if level > self.allowed_level:
            raise forms.ValidationError("A problem with level value")
        return data

并正常使用您的视图

def my_view(request, ...):
    form = MyForm(allowed_level=2)
    if form.is_valid():
        ...
于 2012-04-06T12:56:02.057 回答