2013-02-07 14 views
6

Non sono riuscito a trovare un modo per mostrare i campi personalizzati personalizzati dell'utente su "aggiungi nuova pagina utente" di admin.Django 1.5 rc1 modulo di creazione utente amministratore con campi personalizzati

Ho creato un utente personalizzato che estende AbstractUser e ha aggiunto tre campi personalizzati obbligatori. Non ho creato UserManager personalizzato perché mi sto estendendo da AbstractUser non da AbstractBaseUser.

Per lato amministratore: 1. Ho creato un UserCreationForm personalizzato estendendolo. All'interno della meta class ho aggiunto questi nuovi tre campi personalizzati

Ma non riesco a vedere i campi personalizzati sul lato admin. Sto sbagliando?

Ecco il codice per il lato admin:

class MyUserCreationForm(UserCreationForm): 
    """A form for creating new users. Includes all the required 
    fields, plus a repeated password.""" 
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput) 
    password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput) 

    class Meta: 
     model = get_user_model() 
     fields = ('customField1', 'customField2', 'customField3',) 

    def clean_password2(self): 
     # Check that the two password entries match 
     password1 = self.cleaned_data.get("password1") 
     password2 = self.cleaned_data.get("password2") 
     if password1 and password2 and password1 != password2: 
      raise forms.ValidationError("Passwords don't match") 
     return password2 

    def save(self, commit=True): 
     # Save the provided password in hashed format 
     user = super(UserCreationForm, self).save(commit=False) 
     user.set_password(self.cleaned_data["password1"]) 
     if commit: 
      user.save() 
     return user 


class MyUserAdmin(UserAdmin): 
    form = MyUserChangeForm 
    add_form = MyUserCreationForm 

    fieldsets = (
     (None, {'fields': [('username', 'password', 'customField1', 'customField2', 'customField3'),]}), 
     (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}), 
     (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 
            'groups', 'user_permissions')}), 
     (_('Important dates'), {'fields': ('last_login', 'date_joined')}), 
     ) 



admin.site.register(CustomUser, MyUserAdmin) 
+4

SOLUZIONE --- L'aggiunta di "add_fieldsets" alla classe estesa di UserAdmin fa apparire i campi. add_fieldsets = ( (Nessuna, { 'classi': ('largo',), 'campi': ('nomeutente', 'password1', 'password2', 'campo personalizzato1', 'campo personalizzato2', 'campo personalizzato3',)} ), – ratata

+0

Hey @ratata Puoi pubblicare la tua soluzione come risposta che possiamo risolvere come risposta !? – Azd325

risposta

4

SOLUZIONE --- Aggiunta 'add_fieldsets' alla classe UserAdmin estesa fa apparire i campi.

add_fieldsets = ((None, { 'classes': ('wide',), 'fields': ('username', 'password1', 'password2', 'customField1', 'customField2', 'customField3',)}), 
Problemi correlati