В вашем файле admin.py вам нужно переопределить UserAdmin
следующим образом:
class CustomUserAdmin(BaseUserAdmin):
form = CustomUserChange
add_form = CustomUserCreation
list_display = ('email', 'username', 'password', 'q1', 'q2')
fields = ('email', 'username', 'password', 'q1', 'q2')
model = CustomUser
admin.site.register(CustomUser, UserAdmin)
Посмотрите этот пример в документации, чтобы лучше понять ссылку
Кодировка base64 байтовой строки длиннее, чем байтовая строка, потому что эта байтовая строка имеет 2 ^ 8 возможностей для каждого «местоположения», в то время как строка base 64 имеет только 2 ^ 6 возможностей для каждого местоположения. (поэтому мы называем это основанием 64.)
Только подумайте о логарифмах и голубых дырах. Возьмите число 5000. Сколько ячеек (голубиных дыр, байтов) вам нужно, чтобы сохранить его в базе 256?
"Locations in base256" = ceil(log_2(5000) / 8) = ceil(1.54) = 2
Где log_2 сообщает вам, сколько битов вам нужно. Теперь, сколько в base64?
"Locations in base64" = ceil(log_2(5000) / 6) = ceil(2.04) = 3
Нет, Base64 возвращает 4 байта для входных 3 байтов с округлением в большую сторону (с добавлением =) до следующих 4 -байтовая граница.
int outputLength = ((inputLength+2)/3)*4
Это потому, что он использует только 6 бит (в основном число 0-63) на байт, чтобы использовать только символы ASCII, которые не являются управляющими символами и находятся в 7-битном диапазоне. Следовательно, при кодировании данных с помощью Base64 вы получите 3 * 8 => 4 * 6 бит.
base-64 редко возвращает строку той же длины, что и ввод. По сути, он использует только 6 из доступных 8 бит, поэтому для больших сообщений (в частности) потребуется дополнительная 1/3 объема. В конце есть несколько упаковочных байтов (обычно "="), чтобы сообщение было однозначным.