Для администратора django, как мне добавить поле в модель User и сделать его редактируемым в admin?
Я пытаюсь лучше понять администратора django, и в то же время я пытаюсь добавить еще одно поле к текущему администратору пользователя. В models.py я уже сделал
User.add_to_class('new_field', models.BooleanField(default=False))
и в admin.py я получил следующее (наборы полей в основном просто скопированы из django / contrib / auth / admin.py)
class AdjUserAdmin(UserAdmin):
list_display = UserAdmin.list_display + ('new_field',)
list_filter = UserAdmin.list_filter + ('new_field',)
fieldsets = UserAdmin.fieldsets
fieldsets[1][1]['fields'] = ('first_name','last_name','email','new_field')
Проблема в том, что, когда я делаю это, я получаю ошибку:
AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.
Я посмотрел на UserChangeForm, но, похоже, он уже правильно вводит пользователя в качестве модели. Я не уверен, почемуnew_field
отсутствует в форме.
Спасибо
In regards to this being smelly code
Я знаю, что это вонючий способ исправления ошибок, но создание подклассов дает мне проблемы в основном дляэти причины ... если бы я мог заставить его работать так, как указано выше, я был бы счастлив ... и, возможно, вонючий.
In regards to the recommended way
Мне известен рекомендуемый способ создания профиля пользователя, но в определенных ситуациях я не вижу смысла в создании всей новой таблицы и дополнительном вызове в базу данных, когда все, что я хочу сохранить, - это дополнительный немного информации, такой какis_private
или что-то подобное. Если я храню больше информации, то я согласен, что настройка профиля пользователя предпочтительнее.