Я пытаюсь расширить учебник Уильяма Винсента, размещенный ниже:
https://wsvincent.com/django-custom-user-model-tutorial/
Я пытаюсь добавить новые поля в модель CustomerUser, которую я расширил с помощью импорта AbstractUser из django.contrib.auth.models:
Пользователи / models.py:
from django.db import models
from django.contrib.auth.models import AbstractUser, UserManager
class CustomUserManager(UserManager):
pass
class CustomUser(AbstractUser):
bio = models.TextField(max_length=500, blank=True)
objects = CustomUserManager()
def __str__(self):
return self.username
Я добавил поле 'bio' в модель выше, но когда я получаю доступ к пользователю через административный портал django, я не вижу там нового поля 'bio' с полями администратора по умолчанию, упакованными с django: т.е. : Личная информация: имя, фамилия, адрес электронной почты и т. Д.
Мое приложение CustomUser регистрируется на портале администратора следующим образом (в соответствии с указанным выше руководством):
В качестве теста для себя я смог успешно отобразить био-поле (показав пустое место, как и ожидалось) в моем list_display. Повторюсь, моя проблема в том, что у меня нет возможности обновить это поле, когда я нажимаю, чтобы отредактировать пользователя. Хорошей новостью является то, что django подхватил миграцию моего нового «био» поля.
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['username', 'email','is_staff', 'bio']
admin.site.register(CustomUser, CustomUserAdmin)
Я предполагаю, что решение, которое я ищу, связано с редактированием форм администратора. Вот что у меня есть в моем пользовательском приложении (из учебника).
Пользователи / forms.py:
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = CustomUser
fields = ('username', 'email')
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = ('username', 'email')
Правда, я не очень хорошо понимаю, что происходит в файле form.py чуть выше. Я подозреваю, что это может не иметь ничего общего с формой редактирования пользователя, к которой я обращаюсь через административный портал, поэтому мне может понадобиться выяснить, как внести изменения в стандартное приложение администратора django.
Как всегда, ваша помощь очень ценится, спасибо!