Django Admin Редактируемое, но скрытое поле
В настоящее время у меня есть редактируемое поле в модели в Django Admin. Я бы хотел, чтобы оно оставалось редактируемым, но не читаемым. Например, это будет выглядеть как поле пароля со звездочками, которое администратор может изменить, но не прочитать. Как я могу это сделать?
Вы можете изменить метод str, чтобы скрыть вводимые данные с помощью звездочек (или любого другого выбранного вами символа), а затем заменить стандартную форму ввода администратора на ModelForm, которая использует виджет PasswordInput для полей.
from django.db import models
from django.contrib import admin
from django import forms
# The model (with sample fields)
class Test(models.Model):
name = models.CharField(max_length=244, blank=False)
date_joined = models.DateField(auto_now_add=True)
job_title = models.CharField(max_length=255, blank=True)
def __str__(self) -> str:
display_name = '*' * len(self.name)
display_date_joined = '*' * len(str(self.date_joined))
display_job_title = '*' * len(self.job_title)
return f"{display_name} - {display_date_joined} - {display_job_title}"
# The form class
class TestAdminForm(forms.ModelForm):
class Meta:
model = Test
widgets = {
'name': forms.PasswordInput,
'job_title': forms.PasswordInput,
}
fields = '__all__'
# admin form class
class TestAdmin(admin.ModelAdmin):
form = TestAdminForm
# register site in Admin
admin.site.register(Test, TestAdmin)