在后台使CharField使用密码输入组件
我有一个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
类,还有用ModelAdmin
结合ModelForm
,但就是搞不定怎么让Django把这个表单显示成密码输入框……
1 个回答
34
根据文档,你可以自己创建一个表单,像这样:
from django.forms import ModelForm, PasswordInput
class TwitterUserForm(ModelForm):
class Meta:
model = TwitterUser
widgets = {
'password': PasswordInput(),
}
或者你也可以这样做:
from django.forms import ModelForm, PasswordInput
class TwitterUserForm(ModelForm):
password = forms.CharField(widget=PasswordInput())
class Meta:
model = TwitterUser
我不太确定哪种方法更好——我个人稍微偏向第一种,因为这样你仍然可以从模型中获取任何help_text
和verbose_name
。
无论你选择哪种方法,你都可以在你的应用的admin.py
中让管理员使用你的表单,像这样:
from django.contrib import admin
class TwitterUserAdmin(admin.ModelAdmin):
form = TwitterUserForm
admin.site.register(TwitterUser, TwitterUserAdmin)