django用户和自定义用户类

时间:2013-12-27 00:38:18

标签: python django

在Django中,您有一些自然定义的User类。我的应用程序也定义了一个User类(它们没有冲突,这不是问题)

我的问题是,由于这两个用户类在概念上代表了相同的东西(好吧,用户),因此集成它们是很自然的。也就是说,有一个包含两个类的所有方法和变量的User类。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您应该阅读有关Extending the existing User model

的文档
  

如果您希望存储与用户相关的信息,您可以使用与包含这些字段的模型的一对一关系以获取其他信息。这种一对一模型通常称为配置文件模型,因为它可能存储有关站点用户的非身份验证相关信息。例如,您可以创建一个Employee (注意:下面称为MyUser)模型:

from django.contrib.auth.models import User

class MyUser(models.Model):
    user = models.OneToOneField(User)
    newfield1 = models.CharField(...)

AUTH_USER_MODEL = 'myapp.MyUser'

答案 1 :(得分:1)

有(至少)两种可能性:

1)使用'custom user' functionality of Django (since Django 1.5)

2)从您自己的用户类OneToOneField django.contrib.auth使用User

第一个允许您自定义更多,但如果您尝试使用未准备好用于自定义用户或需要库存User的特定属性的第三方应用,则可能会遇到一些问题。例如,Django Guardian不起作用if you remove the User-Group relationship.

第二种是侵扰性较小,但不允许您自定义User的现有字段。此外,您需要在注册时手动创建自己的用户类的实例。