2011-03-15 52 views
0

任何人都可以提出一個聰明的方法來添加驗證器到Django用戶模型嗎?我根據first_name,last_name和username創建文件和目錄,所以我想要使用我在其他模型中使用的相同標準驗證器來仔細控制那裏允許的字符。我看不到一個簡單的方法來做到這一點。Django用戶模型驗證器

TIA

伊恩

回答

2

真的,你應該繼承的User對象,並添加驗證程序的correct的方式,但如果你喜歡驚險的生活,你可以嘗試猴子修補User類也是如此。

你可以把這個應用程式的__init__.py文件...

from django.contrib.auth.models import User 

def validate_for_fs(value): # <-- If the value string doesn't meet a condition required to be a name on the filesystem then throw a ValidationError 
    if foo_condition_not_met: 
     raise ValidationError(u'foo is not true for %s' % value) 
    if bar_condition_not_met: 
     raise ValidationError(u'bar is not true for %s' % value) 

for field in [f for f in User._meta.fields if f.name in ['first_name','last_name','email']]: 
    field.validators.append(validate_for_fs) 
+0

我看不到的子類用戶的好方法,因爲它似乎原有用戶對象是很好內置在Django的。我採取了你在這裏建議的策略並應用它。它工作得很好。謝謝。伊恩 – IanSR 2011-03-30 01:36:34