Создание CharField использовать PasswordInput в администраторе

У меня есть сайт Django, в котором администратор сайта вводит их Имя пользователя/Пароль Твиттера для использования Программного интерфейса Твиттера. Модель настраивается как это:

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 поле как ввод пароля, но, может казаться, не выясняет, как сделать это. Я попытался использовать a ModelAdmin класс, a ModelAdmin с a ModelForm, но, может казаться, не выясняет, как заставить django отобразить ту форму как ввод пароля...

10
задан Dominic Rodger 11 May 2010 в 13:27
поделиться

1 ответ

Исходя из документации, вы можете создать свою собственную форму, что-то вроде этого:

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)
23
ответ дан 3 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: