2013-06-26 77 views
0

在Django中,我有一個用於創建對象的ModelForm,但是我也想使用這種相同的表單來使用戶能夠爲該對象創建一個模板,以便節省用戶重複填寫字段的時間。在創建實例時指定一個不需要的表單字段

我仍然想要使用窗體的一些驗證(即:該字段是正確的日期格式),但刪除它的必需部分,因爲創建模板時不需要任何字段。有沒有辦法在創建表單的實例時將某些字段設置爲Required = False,以便在創建對象時需要字段,但是在創建模板時,字段在輸入時仍由相同的標準驗證,但不是必需的。

小例子

class Person(models.Model): 
    name = models.CharField(max_length=20, blank=False) 



class PersonForm(forms.ModelForm): 
    class Meta: 
     model = Person 


normal_instance = PersonForm() 
template_instance = PersonForm() 

因此,在這個例子中,在normal_instance我想仍然得到驗證錯誤,如果該字段爲空或超過MAX_LENGTH但在template_instance我只想得到一個如果字段超過max_length,則驗證錯誤。有沒有辦法做到這一點?

回答

1

是的,你可以控制這些屬性在初始化時窗體的__init__

from django import forms 
class PersonForm(forms.Form): 
    some_field=forms.CharField(max_length=20) 

    def __init__(self, *args,**kwargs): 
     required = kwargs.get('required', True) 
     super(PersonForm,self).__init__(*args,**kwargs) 
     self.fields['some_field'].required = required 

template_instance

template_instance = PersonForm(required=False) 

你可以離開normal_instance = PersonForm()獨自一人,因爲它是由設置爲required=True默認

+0

check_max_length? – rantanplan

+0

你的代碼中有一個未聲明的'check_max_length'。 – rantanplan

+1

我明白你的意思了..謝謝 – karthikr

相關問題