Keep authentication through MyUser
. Do something like this:
class UserType(models.Model):
type = ... # teacher, student, whatever
class MyUser(models.Model):
name = ...
username = ...
user_type = models.ForeignKey('UserType',...
class TeacherProfile(models.Model):
user = models.ForeignKey('MyUser',...
user_type = models.ForeignKey('UserType',...
gradebook = ...
class StudentProfile(models.Model):
user = models.ForeignKey('MyUser',...
user_type = models.ForeignKey('UserType',...
homework = ...
on the MyUser model have a method like:
def get_profile(self):
if user_type_is_teacher():
return TeacherProfile.objects.get(user=self, user_type=self.user_type)
so now if you have a student user u
you can say
u.get_profile().homework
you can add more errorhandling etc yourself.