2012-04-06 62 views
0

我有一個表單,其中包含一個稱爲級別的選擇字段,允許選擇0-3之間的值,我想要動態限制選項。這可能嗎?該視圖是否有可能限制在Django的表單實例中的選擇字段

僞代碼將包含這樣的事情:

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

「命令」和「僞」的意思兩個不同的東西:) – agf 2012-04-06 13:29:57

+0

@moguzalp「su」命令是「超級用戶」的縮寫,所以「sudo」的意思是「超級用戶做」。 – agf 2012-04-06 13:41:46

+0

@moguzalp我不確定這是相關的:)這是對Unix命令名稱的誤解。 – agf 2012-04-06 13:44:47

回答

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(): 
     ... 
相關問題