I just implemented this and it's a hassle. There are heated discussions about it. I ended up modifying the auth app and completely eliminating the 'username' field and just using email. Then I modified the admin app to allow the login, and am basically just completely overriding both. Good luck!
On May 4, 10:40 am, Bill Freeman <ke1g...@gmail.com> wrote: > Consider that there may be some third party app which you will > want to add in the future, and that it may depend on the existing > nature of usernames. (E.g.; uses username as a slug and uses > a simple regular expression in a url pattern to capture the username. > > Consider that usernames are currently limited to 30 characters, > while email addresses are not, so you would also need to modify > the User model. > > Wouldn't it be simpler modify the AuthenticationForm to accept > an email address instead of a username and in the clean > method, look up the user by email address, get the username > from there, and authenticate on that and the collected password? > You would still want to modify the User model to mark email > as unique. And you would have to modify UserCreationForm to > collect an email address instead of a username, then in the > clean_email method, check that the email address doesn't > already exist, create a username that doesn't exist (from the email > address, or randomly, adding a numeric suffix if necessary to > make it unique, and modify the save method to set the username > (since username wouldn't be a field of the form you might have > to do your own user object creation and saving, rather than > calling the super-class save method). > > Bill > > > > > > On Tue, May 4, 2010 at 1:19 AM, Felippe Bueno <felippe.bu...@gmail.com> wrote: > > Btw, > > > I read about django don't accept @ in usernames, but I can create a User > > using > > User.create_user(m...@email.com, m...@email.com, mypassword) > > The only problem is, I can't save the user at admin site. > > I was thinking if the limitation is only at forms. > > I did not test the authentication yet. > > Any one know more about this ? > > > Thanks > > ps - sorry my poor english. > > Cheers > > > On Sun, May 2, 2010 at 7:54 AM, Rob <rob.nikan...@gmail.com> wrote: > > >> Hi, > > >> I'm trying to allow usernames that have '@' in them, so they can just > >> be email addresses. Maybe this is a bad idea. ... But putting that > >> aside for a second... The admin user forms don't validate with '@' in > >> usernames, so I thought I'd try this, which I copied from an older > >> post in this group. > > >> from django.contrib.auth.admin import User, UserChangeForm, > >> UserCreationForm, UserAdmin > > >> class OurUserChangeForm(UserChangeForm): > >> username = forms.EmailField > > >> class OurUserCreationForm(UserCreationForm): > >> username = forms.EmailField > > >> admin.site.unregister(User) > >> UserAdmin.form = OurUserChangeForm > >> UserAdmin.add_form = OurUserCreationForm > >> admin.site.register(User, UserAdmin) > > >> But it doesn't work. The user form is still validating with the > >> 'username' from the superclass, which is a RegexField. Is this > >> working as designed? Are you not allowed to override a field? > > >> thanks, > >> Rob > > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "Django users" group. > >> To post to this group, send email to django-us...@googlegroups.com. > >> To unsubscribe from this group, send email to > >> django-users+unsubscr...@googlegroups.com. > >> For more options, visit this group at > >>http://groups.google.com/group/django-users?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Django users" group. > > To post to this group, send email to django-us...@googlegroups.com. > > To unsubscribe from this group, send email to > > django-users+unsubscr...@googlegroups.com. > > For more options, visit this group at > >http://groups.google.com/group/django-users?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-us...@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group > athttp://groups.google.com/group/django-users?hl=en. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.