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!

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top