Para el administrador de django, ¿cómo agrego un campo al modelo de Usuario y lo tengo editable en el administrador?

Estoy tratando de entender mejor al administrador de django y, al mismo tiempo, estoy tratando de agregar un campo más al administrador de usuario actual. En models.py lo he hecho.

User.add_to_class('new_field', models.BooleanField(default=False))

y en admin.py tengo lo siguiente (con los campos básicamente copiados de 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')

El problema es que cuando hago esto me sale el error:

AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.

He mirado UserChangeForm, pero parece que ya está tomando correctamente a User como modelo. No estoy seguro de por quénew_field Falta el formulario.

Gracias

En lo que respecta a este ser maloliente código

Sé que esta es una manera de parchear de monos malolientes para hacer esto, pero la subclasificación me da problemas principalmente paraestas razones ... si pudiera hacerlo funcionar de la manera indicada anteriormente, sería feliz ... y tal vez maloliente.

En cuanto a la forma recomendada.

Soy consciente de la forma recomendada de crear un perfil de usuario, solo que en situaciones particulares, no veo el mérito de crear una tabla completamente nueva y tener una llamada adicional a la base de datos cuando todo lo que quiero almacenar es un extra. poco de información comois_private o algo así. Si estoy almacenando mucha más información, entonces estoy de acuerdo, es preferible configurar un perfil de usuario.

Respuestas a la pregunta(5)

Su respuesta a la pregunta