2010-05-11 48 views
8

我有一個Django站點,站點管理員在其中輸入他們的Twitter用戶名/密碼以便使用Twitter API。該模型是建立這樣的:使CharField在管理中使用PasswordInput

class TwitterUser(models.Model): 
screen_name = models.CharField(max_length=100) 
password = models.CharField(max_length=255) 
def __unicode__(self): 
    return self.screen_name 

我需要管理網站顯示password字段作爲密碼輸入,但似乎無法弄清楚如何做到這一點。我已經使用ModelAdmin類,一ModelAdminModelForm嘗試過,但似乎無法弄清楚如何讓Django的顯示器形成一個密碼輸入...

回答

18

the docs,你可以建立自己的形式,是這樣的:

from django.forms import ModelForm, PasswordInput 

class TwitterUserForm(ModelForm): 
    class Meta: 
     model = TwitterUser 
     widgets = { 
      'password': PasswordInput(), 
     } 

或者你也可以做到這一點like this

from django.forms import ModelForm, PasswordInput 

class TwitterUserForm(ModelForm): 
    password = forms.CharField(widget=PasswordInput()) 
    class Meta: 
     model = TwitterUser 

我不知道哪一個更好 - 我稍微比較喜歡第一個,因爲它意味着你將仍然GE從您的模型中任意輸入help_textverbose_name

不管你採取這兩種方法的,然後你可以讓管理員使用您的形式是這樣的(在應用程序的admin.py):

from django.contrib import admin 

class TwitterUserAdmin(admin.ModelAdmin): 
    form = TwitterUserForm 

admin.site.register(TwitterUser, TwitterUserAdmin) 
+0

我也說去的第一個,我不知道在第二個版本中密碼的乾淨方法是否相同。 – KillianDS 2010-05-11 13:32:15

+0

謝謝,我在文檔中看到了這個,但忘了在'admin.site.register'行添加',TwitterUserAdmin',所以顯然不能正常工作。謝謝! – 2010-05-11 13:58:28

+0

@保羅 - 沒問題,很高興我可以幫忙! – 2010-05-11 14:00:20

相關問題