Sto cercando di capire meglio l'amministratore di django e, allo stesso tempo, sto cercando di aggiungere un altro campo all'attuale amministratore degli utenti. In models.py ho fattoPer l'amministratore di django, come posso aggiungere un campo al modello Utente e renderlo modificabile nell'amministratore?
User.add_to_class('new_field', models.BooleanField(default=False))
e admin.py ho ottenuto il seguente (con fieldsets fondamentalmente solo copiati da 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')
il problema è che, quando faccio questo ottengo l'errore:
AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.
ho guardato UserChangeForm, ma sembra come se fosse un è già in grado di inserire correttamente l'utente come modello. Non sono sicuro del motivo per cui new_field
manca dal modulo.
Grazie
Per quanto riguarda questo codice puzzolente essendo
So che questo è un modo puzzolente scimmia patch per andare a fare questo, ma mi fa sottoclassi principalmente questioni per these ragioni .. se io potrebbe farlo funzionare come sopra indicato, sarei felice .. e forse puzzolente.
Per quanto riguarda il metodo consigliato
Sono a conoscenza del modo consigliato di creare un profilo utente, solo che in situazioni particolari, non vedo il merito nella creazione di un'intera nuova tabella e avere una chiamata aggiuntiva al database quando tutto ciò che voglio memorizzare è un ulteriore bit di informazioni come is_private
o alcuni di questi. Se sto memorizzando molte più informazioni, allora sono d'accordo, la configurazione di un profilo utente è preferibile.
Hmm .. dunno perché non ha ancora mi esimo inchiostro che dopo aver usato list_display = UserAdmin.list_display + ('new_field',) .. grazie! – Silfheed
Quando uso: UserAdmin.list_display + = ('soprannome',) UserAdmin.list_filter + = ('soprannome',) UserAdmin.fieldsets + = ('soprannome',) <-----> c'è qualcosa che non va, come questo:: (admin.E008) Il valore di 'fieldsets [4]' deve essere una lista o tupla. <-----> e ho chang a: UserAdmin.list_display + = ('soprannome',) UserAdmin.list_filter + = ('soprannome',) UserAdmin.fieldsets + = (('soprannome', { 'campi': ('soprannome',)}),) <-----> questo problema è scomparso. –
bovenson