代码之家  ›  专栏  ›  技术社区  ›  Marcos Marin

在django中,为不同类型的用户提供不同配置文件的最佳方式是什么?

  •  6
  • Marcos Marin  · 技术社区  · 15 年前

    2 回复  |  直到 15 年前
        1
  •  7
  •   Oliver Andrich    15 年前

    对于Django 1.1,它目前处于测试阶段,我将实现一个 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
    

    使用Django 1.0.x,您可以实现基于用户的派生类,但这可能会破坏其他地方的代码。对于这样的东西,我喜欢代理类,它只添加python功能而不更改数据库模型。

        2
  •  0
  •   S.Lott    15 年前