【问题标题】:Django 1.5: user and additional infoDjango 1.5:用户和附加信息
【发布时间】:2026-01-29 09:30:01
【问题描述】:

我有一个基于 django auth 的身份验证系统,但我必须向用户添加信息。 在 django 1.5 中最好的方法是什么? (在 1.4 中,我使用与 onetoone 链接到用户的配置文件,但现在?)

【问题讨论】:

    标签: django


    【解决方案1】:

    Django 1.5 有extendable User models。基本上,您可以扩展一个抽象的基本用户模型,添加您的字段和任何内容并从那里使用它。

    基本模型只有基本的身份验证——密码字段和最后一次登录时间的字段。您甚至必须创建自己的用户名字段。如果您对当前 Django 用户模型(包含用户名、名字、姓氏等)感到满意,它也以 AbstractUser 的形式存在,您可以扩展它而不是 AbstractBaseUser 并添加您自己的字段。

    【讨论】:

    • 是的,我在文档上读到了。但我不想实现 AbstractBaseUser,因为我需要的已经在 User 中了。我只需要添加一些东西。那么,如何编码呢?​​
    • User 与 AbstractUser 基本相同,但具有 SWAPPABLE 属性(无论是什么)github.com/django/django/blob/master/django/contrib/auth/…。因此,只需让您自己的模型从 AbstractUser 继承即可。
    • 我继承了,但在 syncdb 上我得到了以下错误:CommandError:一个或多个模型未验证:account.user:m2m 字段“组”的访问器与相关 m2m 字段“Group.user_set”发生冲突'。将related_name 参数添加到“组”的定义中。 account.user:m2m 字段“user_permissions”的访问器与相关的 m2m 字段“Permission.user_set”冲突。将related_name 参数添加到“user_permissions”的定义中。 auth.user:m2m 字段“组”的访问器与相关的 m2m 字段“Group.user_set”发生冲突。在“组”的定义中添加一个 related_name 参数。
    • 您是否遵循了所有必需的步骤,例如设置 AUTH_USER_MODEL 设置并将您的关系更改为指向 AUTH_USER_MODEL 而不是 django auth 用户模型?
    【解决方案2】:

    在 django 1.5 中,您应该创建一个 custom user model。用户配置文件现已弃用。

    【讨论】:

    • 它在哪里说不推荐使用“配置文件”扩展用户模型? “开发” django 文档和 1.7 文档都将此作为第一个解决方案,并且 AUTH_USER_MODEL 带有一些非常严重的警告和影响......
    • AUTH_PROFILE_MODULEdeprecated as of django 1.5