level と呼ばれる選択フィールドを含むフォームがあり、動的に「制限」したいオプションの 0 ~ 3 の間で値を選択できます。これは可能ですか?
ビューの疑似コードには、次のようなものが含まれます。
form = new instance of myform
allowed_level = 2
form.level maximum value =< allowed_level
level と呼ばれる選択フィールドを含むフォームがあり、動的に「制限」したいオプションの 0 ~ 3 の間で値を選択できます。これは可能ですか?
ビューの疑似コードには、次のようなものが含まれます。
form = new instance of myform
allowed_level = 2
form.level maximum value =< allowed_level
もちろん、フォームを作成するときに検証基準を動的に設定できます:
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():
...