Django Interleaving ProfiloUtente con profilo in Admin
-
04-10-2019 - |
Domanda
Ho un profilo utente che è attualmente visualizzato nella Admin tramite una pila Inline. Tuttavia perché ho campi come last_name_prefix e last_name_suffix (per i nomi stranieri come Piet van Dijk per coprire il corretto smistamento per il cognome) mi piacerebbe essere in grado interleave i campi del profilo utente con i normali campi di cambiamento degli utenti. Così nel cambiamento di amministrazione Interfaccia utente sembrerebbe in questo modo:
Nome:
Cognome Prefisso:
Cognome
Cognome Suffisso:
ho provato questa soluzione: http: // gruppi .google.com / gruppo / django utenti / browse_thread / filetto / bf7f2a0576e4afd1 / 5e3c1e98c0c2a5b1 . Ma che i campi aggiuntivi appena creato nella forma utente che non sono stati in realtà provenienti dal profilo utente (sono rimasti vuoto anche se si dovrebbe ottenere i valori dal profilo utente).
Qualcuno potrebbe spiegare a me se questo potrebbe essere fatto e come? Grazie mille!
Soluzione 2
Questa domanda è stato risolto con la nuova versione 1.5 Django: https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#auth-custom-user .
Altri suggerimenti
Sono abbastanza sicuro che avresti bisogno di sovrascrivere normale amministrazione per l'utente.
Quello che vorrei davvero fare è creare un forms.ModelForm
speciale per ProfiloUtente chiamata, dire UserProfileAdminForm
che comprendeva i campi dal modello User
pure. Poi ci si registra UserProfile per admin e la funzione save
per l'UserProfileAdminForm sarebbe catturare i campi user-specifici e di creare o aggiornare il record User
(Questo viene lasciato come un esercizio per l'OP).
Maggiori informazioni
Quando dico aggiungere altri campi a un modulo, li intendo aggiungere manualmente:
class UserProfileAdminForm(forms.ModelForm):
username = forms.CharField(...)
email = forms.EmailField(...)
first_name = ...
last_name = ...
def __init__(self, *args, **kwargs):
super(UserProfileAdminForm, self).__init__(*args, **kwargs)
profile = kwargs.get('instance', None)
if profile and profile.user:
self.user = profile.user
self.fields['username'].initial = self.user.username
self.fields['last_name'].initial = ...
...
class Meta:
model = UserProfile