And*_*rea 13 django django-models django-users
我有一个Django应用程序,它允许不同类型的用户:公司,管理员,外部人员等.当然,使用默认的身份验证系统和组,所有这些都很容易管理.
我的问题是属于不同群体的用户将拥有不同的相关信息 - 例如,公司需要提供一些对私人用户没有意义的商业信息.因此,我需要附加不同类型的配置文件,具体取决于组.(在我的应用程序组中是互斥的.)
不幸的是,Django只允许将单个模型作为配置文件附加,并且声明该模型settings.AUTH_PROFILE_MODULE.在内部,由User.get_profile()方法检索,该方法基本上只读取该值并执行一些检查,例如模型实际存在.
我正在考虑子类化User和重写get_profile()方法,以便根据组返回不同的模型.
是否有更简单/更清洁的方式来管理不同类型的配置文件?
考虑到用户配置文件的引入完全是为了避免必须使用子类,我提出的建议似乎有点破解.
DrT*_*rsa 16
使用OneToOneFieldto User和创建模型related_name.
E. g.:
class Firm(models.Model):
user = models.OneToOneField(User, related_name='firm')
# other fields
class External(models.Model):
user = models.OneToOneField(User, related_name='external')
# other fields
Run Code Online (Sandbox Code Playgroud)
然后你可以在user(if hasattr(request.user, 'firm'))中检查这个属性的存在并返回正确的实例.我把它放在自定义中间件中,request.user_profile例如.
| 归档时间: |
|
| 查看次数: |
3124 次 |
| 最近记录: |