Is it possible to use Django’s user authentication features with more than one profile?
Currently I have a settings.py file that has this in it:
AUTH_PROFILE_MODULE = 'auth.UserProfileA'
and a models.py file that has this in it:
from django.db import models
from django.contrib.auth.models import User
class UserProfileA(models.Model):
company = models.CharField(max_length=30)
user = models.ForeignKey(User, unique=True)
that way, if a user logs in, I can easily get the profile because the User has a get_profile() method. However, I would like to add UserProfileB. From looking around a bit, it seems that the starting point is to create a superclass to use as the AUTH_PROFILE_MODULE and have both UserProfileA and UserProfileB inherit from that superclass. The problem is, I don’t think the get_profile() method returns the correct profile. It would return an instance of the superclass. I come from a java background (polymorphism) so I’m not sure exactly what I should be doing.
Thanks!
Edit:
Well I found a way to do it via something called an “inheritance hack” that I found at this site http://djangosnippets.org/snippets/1031/
It works really well, however, coming from a java background where this stuff happens automatically, I’m a little unsettled by the fact that someone had to code this up and call it a “hack” to do it in python. Is there a reason why python doesn’t enable this?
Here is the answer to my question of how to get multiple profiles to work:
I don’t really understand why it works or why the developers of django/python made inheritance work this way