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 に答える