Django multiple user profiles / subprofiles

I am trying to create an intranet / extranet with internal / external user profiles with a common common profile. I looked at a few answers on this site, but no one specifically addresses what I'm looking for. Below are the files (truncated) that I have.

What is the best way to create a profile model, with subprofiles for each type of user? I try not to require my own authentication backend, if at all possible.

https://gist.github.com/1196077

+4
source share
3 answers

You need a combination of storing additional information about users and an inheritance model .

, User, , , AUTH_PROFILE_MODULE.

, . , , User.get_profile().

... , , , - , .. .

+4

, , , :

models.py

from django.db import models
from django.contrib.auth.models import User

class Pollster(models.Model):
    """docstring for Polister"""
    user   = models.OneToOneField(User, related_name = 'polister', unique=True)
    cedule = models.CharField( max_length = 100 ) 

class Respondent(models.Model):
    """ """
    born_date   = models.DateField( verbose_name=u'fecha de nacimiento' )
    cedule      = models.CharField( max_length = 100, verbose_name=u'cedula' ) 
    comunity    = models.CharField( max_length = 100, verbose_name=u'comunidad')
    phone       = models.CharField( max_length = 50, verbose_name=u'telefono')
    sanrelation = models.TextField( verbose_name =u'Relacion con SAN')
    user        = models.OneToOneField( User, related_name = 'respondent')

MiddleWare:

i middleware.py

from django.contrib.auth.models import User
from encuestas.models import Pollster, Respondent

class RequestMiddleWare(object):
    """docstring for """
    def process_request(self,request):
        if isPollster(request.user):
            request.user.userprofile = Pollster.objects.get( user = request.user.id)
        elif isRespondent(request.user):
            request.user.userprofile = Respondent.objects.get(user = request.user.id)   
        return None   

def isPollster(user):
    return Pollster.objects.filter(user=user.id).exists()

def isRespondent(user):
    return Respondent.objects.filter(user=user.id).exists()

settings.py : MIDDLEWARE_CLASSES :

'encuestas.middleware.RequestMiddleWare'

encuestas - my_app - RequestMiddleWare -

+9

All Articles