python - 使 CharField 在管理员中使用 PasswordInput

标签 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 类,一个 ModelAdmin 和一个 ModelForm,但似乎无法弄清楚如何让 django 显示该表单作为密码输入...

最佳答案

来自 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)

关于python - 使 CharField 在管理员中使用 PasswordInput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2810996/

相关文章:

django - 以递归方式使 Django 缓存中的路径无效

python - 在 python (django) 中,如何在更新全局字典数据结构时停止访问它?

django - FieldError at/Related Field 得到无效查找 : is_null

python - Django 管理站点 : how to create a single page for global settings?

python - 如何将自定义 javascript 添加到 django-xadmin?

python - 在 Django 管理员的 change_form 中的两个模型字段之间添加自定义 html

python - 如何更改 virtualenv 中依赖项应用程序中的模型

python - Matplotlib 条形图不绘制边界/边缘

python - scipy——如何将一个零数组插入到另一个具有不同维度的数组中

python - 连接新元数据并复制到所有行的最佳方式(Pandas)