2011-07-13 47 views
9

我想更多的字段添加到標準的Django UserCreationForm所以我繼續和它的子類我的應用程序的forms.py的文件裏,並結束了與此:修改Django的UserCreationForm

class CustomUserCreationForm(UserCreationForm): 
    email = forms.EmailField(label = "Email") 
    first_name = forms.CharField(label = "First name") 
    last_name = forms.CharField(label = "Last name") 

    class Meta: 
     model = User 
     fields = ("first_name", "last_name", "username",) 

    def save(self, commit=True): 
     user = super(CustomUserCreationForm, self).save(commit=False) 
     user.first_name = first_name 
     user.last_name = last_name 
     user.email = self.cleaned_data["email"] 
     if commit: 
      user.save() 
     return user 

然後我繼續創建爲我的用戶自定義的ModelAdmin,它看起來像這樣:

class CustomUserAdmin(UserAdmin): 
    add_form = CustomUserCreationForm 
    inlines = [ProfileInline,] 


admin.site.unregister(User) 
admin.site.register(User, CustomUserAdmin) 
admin.site.register(Class, ClassAdmin) 

不管我做什麼,但是,新CustomUserCreationForm顯示不出來,當我進入管理頁面,並嘗試添加新用戶。我在哪裏搞砸了?

編輯:它似乎沒有顯示窗體,但正在使用。如果我嘗試僅使用典型UserCreationForm所具有的用戶名和密碼字段添加新用戶,則會出現錯誤,當我刪除我的ModelAdmin中的add_form行時,該錯誤會立即消失。爲什麼不顯示?

我的本地應用程序目錄中也沒有任何管理模板。這可能是問題嗎?

回答

11

您需要將添加的字段添加到自定義用戶admin類的add_fieldsets屬性中。

#example: 
add_fieldsets = (
     (None, { 
      'classes': ('wide',), 
      'fields': ('username', 'email', 'password1', 'password2')} 
     ), 
    ) 

用戶也有類似的問題,前些天:How can I have Django user registration single step (instead of two step)process with email compulsory?其中涉及創建一個自定義用戶管理形式以及。

+0

如何更改顯示在此(第一個)表格上方的「輸入用戶名和密碼」文本? – Derek