Para o administrador do django, como adiciono um campo ao modelo do usuário e o edito no admin?
Eu estou tentando entender melhor o administrador do django e ao mesmo tempo, estou tentando adicionar mais um campo ao administrador do usuário atual. Em models.py eu fiz
User.add_to_class('new_field', models.BooleanField(default=False))
e no admin.py eu tenho o seguinte (com fieldsets basicamente copiados do 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')
O problema é que, quando faço isso, recebo o erro:
AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.
Eu olhei para UserChangeForm, mas parece que já está puxando corretamente o usuário como o modelo. Eu não tenho certeza do porquênew_field
está faltando no formulário.
obrigado
Em relação a este ser código fedorento
Eu sei que este é um jeito malcriado de fazer isso, mas a subclasse me dá problemas principalmente paraestes razões .. se eu pudesse fazê-lo funcionar da maneira indicada acima, eu ficaria feliz .. e talvez fedorento.
Em relação à maneira recomendada
Estou ciente da maneira recomendada de criar um perfil de usuário, apenas que, em determinadas situações, não vejo o mérito de criar uma nova tabela inteira e ter uma chamada adicional para o banco de dados quando tudo que eu quero armazenar é um extra pouco de informação comois_private
ou algo assim. Se eu estou armazenando muito mais informações, então eu concordo, é preferível configurar um perfil de usuário.