2015-07-21 31 views
1

我在我的應用程序中定義了一個模型表單,在我的一個表單域中,我希望用戶輸入他們的輸入,但輸入的第一個字母在首都。如果情況並非如此,應用程序應該拋出錯誤並提示用戶重新輸入特定的表單條目。Django:表單驗證接受第一個字母在CAPS中的字符串

是否有一個內置的Django表單驗證器來實現這樣的限制?

PS:我知道ModelForm提供的capitalize()方法,它將表單字段存儲在數據庫中,首字母大寫。但是,這對我來說不起作用,因爲我想驗證表單提交前的輸入。

+0

爲什麼不直接用'capitalize()'修復它? [EAFP](https://docs.python.org/2/glossary.html#term-eafp)? – IanAuld

+0

@IanAuld我已經在我的OP中提到過這個。我希望用戶自己在表單域中輸入正確的輸入。如果沒有別的,'capitalize()'會起作用。但是,我想知道是否有另一種方法在我的表單中實現這個約束。 –

+0

然後使用jQuery /客戶端驗證。而且,值得你說的是,你不想這麼做,並不是爲什麼你不想這麼做,這是一個非常重要的差異。 – IanAuld

回答

1
from django.db import models 
from django.core.exceptions import ValidationError 

def validate_capitalized(value): 
    if value != value.capitalize(): 
     raise ValidationError('Invalid (not capitalized) value: %(value)s', 
           code='invalid', 
           params={'value': value}) 

class MyModel(models.Model): 
    name = models.CharField(max_length=50, validators=[validate_capitalized]) 

您可以根據需要自定義ValidationError。 Docs:validatorsValidationError

相關問題