У меня есть сайт 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 отобразить ту форму как ввод пароля...
Исходя из документации, вы можете создать свою собственную форму, что-то вроде этого:
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)