On 9/11/2016 11:54 AM, Victor Hooi wrote:
Hi,
What is the current canonical way to handle multiple user-profiles in
Django?
For example - say you have "Teachers", "Students", "Parents" - you may
have slightly different fields for each one and/or different
behaviour. Students will have things like grades, Parents may have
1-to-many Students etc.
I understand you can use a OneToOne field to associated different user
profiles with each type of user:
If a Parent is also a Teacher then you would need two profiles for that
parent. Personally, I like profiles in a OneToOne relationship with the
user (or custom user) model but for different sets of characteristics I
would use multiple tables and make each of them OneToOne with user.
If they were somewhat similar I would separate out all the common fields
and methods and make an abstract CoreFields model and inherit that in
each of the different profile models. For example
StudentProfile(CoreFields), TeacherProfile(CoreFields)
ParentProfile(CoreFields) and so on. That would let you have more than
one profile per user.
I'm not sure about canonical in this context. The zen of python is
probably your best guide.
Mike
https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#extending-the-existing-user-model
The docs mention using a django.db.models.signals.post_save
<https://docs.djangoproject.com/en/1.10/ref/signals/#django.db.models.signals.post_save>
signal on User, but I'm guessing that won't work here if you have
multiple types of users.
Or are you better off subclassing
django.contrib.auth.models.AbstractUser? (I get the impression using
profile models is less invasive).
Regards,
Victor
--
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 [email protected]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/314de801-0ca7-4eb3-abb9-7a3044994bcd%40googlegroups.com
<https://groups.google.com/d/msgid/django-users/314de801-0ca7-4eb3-abb9-7a3044994bcd%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/f7edf132-fc56-d1fb-06a5-bbd80e99ec17%40dewhirst.com.au.
For more options, visit https://groups.google.com/d/optout.