What's the best way to have different profiles for different kinds of users in django?

后端 未结 2 540
[愿得一人]
[愿得一人] 2021-02-06 10:34

In my application I have students, professors and staff. Staff members do not need a profile but professors and students each need a different profile. I\'d rather not implement

相关标签:
2条回答
  • 2021-02-06 10:41

    Have you rad http://docs.djangoproject.com/en/dev/topics/auth/#auth-profiles?

    That's the standard solution.

    0 讨论(0)
  • 2021-02-06 11:04

    With Django 1.1, which is currently in beta, I would implement a proxy model.

    class MyUser(User):
    
      class Meta:
        proxy = True
    
      def get_profile(self):
        if self.role == 'professor':
          return ProfessorProfile._default_manager.get(user_id__exakt=self.id)
        elif self.role == 'student':
          return StudentProfile._default_manager.get(user_id__exakt=self.id)
        else:
          # staff
          return None
    

    get_profile needs the caching code from the original and so on. But essentially you could do something like that.

    With Django 1.0.x you could implement derived classes based on User, but this might break code in other places. For stuff like that I love proxy classes, which just add python functionality without changing the database models.

    0 讨论(0)
提交回复
热议问题