使CharField在admin中使用PasswordInput

时间:2010-05-11 13:20:28

标签: python django django-admin

我有一个Django网站,其中网站管理员输入他们的Twitter用户名/密码以便使用Twitter API。模型设置如下:

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显示为密码输入...

1 个答案:

答案 0 :(得分:21)

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

我不知道哪一个更好 - 我稍微偏好第一个,因为这意味着你仍然可以从你的模型中获得任何help_textverbose_name

无论您使用哪两种方法,都可以让管理员使用您的表单(在您的应用的admin.py中):

from django.contrib import admin

class TwitterUserAdmin(admin.ModelAdmin):
    form = TwitterUserForm

admin.site.register(TwitterUser, TwitterUserAdmin)