每个App的自定义用户模型

时间:2015-03-24 10:19:09

标签: django

我们将django app从1.5升级到1.7

在我的情况下,我不确定Substituting a custom User model的更新是否是个好主意。

由于只有一个AUTH_USER_MODEL设置,因此只有一个应用可以成为“赢家”。

如果你有多个应用,这不起作用。

如果有多个应用想要按用户存储自定义信息,该怎么办?

示例:

employeeapp想要为每个用户存储salaryskillsapp想要为每个用户存储skill_level

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用"个人资料"对User

的1对1字段的模型

<强> employeeapp / models.py

class Employee(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    salary = models.IntegerField()

<强> skillsapp / models.py

class Handyman(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    skill_level = models.IntegerField()

然后你可以访问这些&#34;个人资料&#34;就像这样简单:

user = User.objects.get(username='me')
user.employee.salary
user.handyman.skill_level

如果你想创建&#34;个人资料&#34;实例会自动使用User信号发送给{{1}}发件人。