我有一个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以密码输入的形式显示该表单...

最佳答案

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/

10-12 16:35