使CharField在admin中使用PasswordInput

10 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
Run Code Online (Sandbox Code Playgroud)

我需要管理员站点将该password字段显示为密码输入,但似乎无法弄清楚如何执行此操作.我已经尝试过使用一个ModelAdmin类,一个ModelAdmin有一个ModelForm,但似乎无法弄清楚如何使django显示形式作为密码输入...

Dom*_*ger 23

文档中,您可以构建自己的表单,如下所示:

from django.forms import ModelForm, PasswordInput

class TwitterUserForm(ModelForm):
    class Meta:
        model = TwitterUser
        widgets = {
            'password': PasswordInput(),
        }
Run Code Online (Sandbox Code Playgroud)

或者你也可以做这样的:

from django.forms import ModelForm, PasswordInput

class TwitterUserForm(ModelForm):
    password = forms.CharField(widget=PasswordInput())
    class Meta:
        model = TwitterUser
Run Code Online (Sandbox Code Playgroud)

我不知道哪一个更好-我稍微比较喜欢第一个,因为这意味着你仍然会得到任何help_textverbose_name您的机型.

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

from django.contrib import admin

class TwitterUserAdmin(admin.ModelAdmin):
    form = TwitterUserForm

admin.site.register(TwitterUser, TwitterUserAdmin)
Run Code Online (Sandbox Code Playgroud)