Russ, Thanks so much for getting back to me! I shouldn't have posted that without my code in front of me... (was posting from my phone, in bed)
It turns out that I did NOT have AUTH_USER_MODEL set. I had AUTH_PROFILE_MODULE set. I changed it to AUTH_USER_MODEL and followed the custom user model example in the docs. I was really reluctant to do so earlier because the docs make it sound like everything is pain moving forward with a custom user model. Is it? On Monday, June 17, 2013 6:50:23 PM UTC-5, Russell Keith-Magee wrote: > > > On Mon, Jun 17, 2013 at 10:31 PM, Evan Stone <ev...@aquapony.com<javascript:> > > wrote: > >> Per the docs for Django 1.5, I have attempted to broaden the range of >> data held in the default user model by making an extended user model with >> the AbstractUser class. I made the model (called "Client") and listed it in >> settings.py as the AUTH_USER_MODEL. Syncdb took it and it worked great. >> Specifically, syncdb made a new MySQL table with all the default user >> fields AND my own additional fields, followed by two related tables for >> user permissions. I was pretty excited about all this until I tried to >> authenticate a user. Apparently, the built-in authenticate method is still >> pointing at the built-in user model. How can I point that method to my new >> custom model instead? >> >> Fyi, I created new users in the Client model through the djangoized >> python shell and used set_password to create the passwords. I checked the >> MySQL tables to verify that my new user records in my Client table looked >> just like a new user in the built-in user table (auth-user). They did. But >> they won't authenticate. To double-check, I then made a new user in the >> built-in user model and it authenticated just fine. >> >> I've read about coding custom authentication with a totally customized >> user model--it looks quite involved and that really shouldn't be necessary >> for what I'm doing, because my model isn't custom. I've simply extended the >> existing user model and wish to authenticate users based on that model. >> There has to be an easier way. Any advice? >> >> Hi Evan, > > It's difficult to say what's going on without seeing code. However, if > AUTH_USER_MODEL is set as you describe, then the built-in User table > shouldn't even be created, so it shouldn't be possible for the built-in > auth_user table to be used for authentication purposes. > > So - it sounds like there's something wonky in your basic project > configuration. > > The simplest test I can think of is to run ./manage.py createsuperuser. > This command should ask you for all the REQUIRED_FIELDS on your model, and > then store an object with superuser permissions in your custom User table. > If this doesn't happen, then you know you have a low level configuration > problem. createsuperuser doesn't get involved with any of the > authentication code -- it's a very low level tool for dealing with the > "User" model (whichever User that is), so it's a good test to see if your > project is finding your custom User model. > > Another test would be to open a ./manage.py shell and run: > > $ from django.contrib.auth import get_user_model > $ print get_user_model() > > If that doesn't point at your custom User model, you have a problem. > > As for your question about custom coding authentication -- this should > only be needed if your custom User model doesn't meet the basic > requirements of Django's User. If you have a single unique field that is an > identifier (e.g., a username, and email address, or some other identifier > of some kind), then you should be able to use Django's built-in > authentication. > > Yours, > Russ Magee %-) > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. For more options, visit https://groups.google.com/groups/opt_out.