2013-04-15 46 views
2

我想使用Django 1.5中的新功能來使用電子郵件地址作爲用戶名。用戶名仍然需要在自定義用戶模型

一切工作正常,使用該條形碼的管理界面更新的用戶,我不得不亂動,使密碼不會出現原料(並使用密碼更改表單等): -

class PlayerChangeForm(UserChangeForm): 
    class Meta(UserChangeForm.Meta): 
     model = Player 

class PlayerCreationForm(UserCreationForm): 
    class Meta(UserCreationForm.Meta): 
     model = Player 

class PlayerAdmin(auth.admin.UserAdmin): 
    form = PlayerChangeForm 
    add_form = PlayerCreationForm 

    ordering = ['first_name', 'last_name'] 
    list_display = ('primkey', 'email', 'mobile') 
    list_editable = ('email', 'mobile') 

    list_filter =() 
    fieldsets = ((None, {'fields': ('username', 'first_name', 'last_name', 'email', 'password', 'mobile')}), 
    ('Permissions', {'fields': ('is_active', 'is_admin')}), 
    ('Important dates', {'fields': ('last_login',)}), 
    ) 

    add_fieldsets = ((None, { 
    'classes': ('wide',), 
    'fields': ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')} 
), 
    ) 
    filter_horizontal =() 

    def primkey(self, obj): 
     return ("%s" % (obj.get_full_name())) 
    primkey.short_description = 'Player' 

這使得管理頁面看起來很好,但是當我真的嘗試和更新播放器時,它告訴我在表單上有一個錯誤,但並不表示位置。

經過一番混亂之後,事實證明,它希望設置用戶名字段(如果我將其添加到管理員表單中,它表示該字段是必需的),但肯定情況並非如此,因爲我是否已將我的USERNAME_FIELD設置爲「電子郵件」?

如果我將該字段設置爲某些內容,則可以保存對其他字段所做的任何更改,但不會將我的更新保存到用戶名字段。但是,真的,我不想設置用戶名 - 我使用電子郵件作爲用戶名。

關於這個的任何想法還是這是在Django中的錯誤?

回答

0

Django Documentation狀態,該表格必須重寫:

  • UserCreationForm

取決於用戶模型。必須爲任何自定義用戶模型重新編寫。

  • UserChangeForm

取決於用戶模型。必須爲任何自定義用戶模型重新編寫。

有一個相關的票:https://code.djangoproject.com/ticket/19353,但代碼仍然期待username場存在。

相關問題