I'm doing exactly what Peter of the Norse suggested here. With this architecture (CustomUser and Profiles with OTO relation) I'm able to get data from both models into single endpoint, but when it comes to PUT it throws error saying some field(from profile) is not field of CustomUser. Let me explain more, I wrote a serializer where I combined both CustomUser and Profile. then I override the update method where I implemented the mechanism to separate profile data from the payload and save separately. I sharing my serializer class :
As you can see my serializer is designed in nested style, but my print of validated_data shows that its receiving a non nested object. Can you please shed some light on this? what am I missing out here?
On Tuesday, May 3, 2016 at 12:18:17 PM UTC+6 Peter of the Norse wrote:
On Apr 6, 2016, at 9:41 PM, Sudhanshu Shekhar <sudshe...@gmail.com> wrote:Hi,I am creating a tutor-student forum using Django. For which I need to have two different user profiles, one for students and one for teachers. However, I am unsure about the best way to do this. I am currently following the below approach:class UserProfile:
user = models.OneToOneField(User, reverse_name="profile")
#other common Attributes
class Meta(object):
abstract = true
class TutorProfile():
#tutor fields
class Meta(object):
abstract = true
class StudentProfile():
#student fields
class Meta(object):
abstract = true
class Profile(TutorProfile, StudentProfile, UserProfile):
passThe idea is taken from the Django best practices book. However, I am curious if there is any other way with lesser space usage. Any thoughts?PS: I also asked the same question on stackoverflow : http://stackoverflow.com/questions/36404889/django-multiple-user-profiles-with-class-based-views-best-practices but didn't get any responses.First of all, I don't like multiple inheritance. You are in control of all of the parent classes, so it might not blow up in your face, but there still night be problems down the line. Second, I think this might be the same as just creating a single class with all of the fields, so there's no reason to create three abstract classes for it to inherit from.How old is the Django best practices book you are using? Because starting with 1.5, you should be using a custom User model instead of a constant profile.What I would do, and I'd love to hear some debate about it, is put most (or all, depending on requirements) of the fields from the UserProfile in the new custom user model, and have two not-abstract profiles with one-to-one fields to the user. If the things in UserProfile don't make sense for all users, then make three profiles which all point to the custom user model.Peter of the Norse
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+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/f91842a3-fa8e-4ffc-86e4-4bc6c75baa3cn%40googlegroups.com.
No comments:
Post a Comment