Skip to main content
 首页 » 编程设计

python之Django 1.5 多用户身份验证或

2025年05月04日26lidabo

我创建了一个带有自定义 User 模型的 Django 1.5 WebApp。它有效。 :)

我已经有了另一个应用正在使用的第二个 User2 模型。第二个 User2 模型不是 Django 应用程序,因此它是根据不同的标准构建的。它已经在许多用户的生产中。

现在我需要让 User 和 User2 都可以登录并做完全不同的事情。

我正在考虑使用一个 Django 应用程序来管理所有内容,因为在这两种情况下我都需要使用两种模型:当 User 登录时,我还需要一些关于 User2< 的信息 反之亦然。

我没有看到合并 User、User2 的方法,因为它们具有完全不同的字段。另外 User2 有一个指向 User 的 ForeignKey。

经过多次试验,我发现django 只支持一种AUTH_USER_MODEL。 所以现在我不知道如何进行。

我看到以下替代方案:

  • 创建一个抽象用户模型 (AbstractUser),然后将 User 和 User2 子类化,但我不知道如何以及是否这样做会工作

  • 创建一个全新的 Django WebApp,但这需要更大的(而且可能是不必要的)努力

  • 寻找另一种方法来验证 User2,也许编写我的自定义验证码

您还看到其他选择吗?哪个最好?

如有任何帮助,我们将不胜感激!

请您参考如下方法:

我不确定我是否完全理解您的问题,但如果我理解了,我认为您正在寻找的是 OneToOneField。

当我在客户需要自定义用户的项目上工作时,最好的解决方案之一是创建一个新模型,其中 OneToOneField 像 Profile< 一样指向 Django 用户模型。当您有一个 User 对象时,您可以执行 user.profile 并获得与用户相关的配置文件(因此您可以执行 user.profile.any_profile_field).

它也以另一种方式出现,如果你有对象 Profile 你可以访问 User 对象,比如 profile.user 和也做 profile.user.first_name

因此,如果我认为它很适合您的问题,您应该将模型更改为 OneToOneField 到 User,如下所示:

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    field1 = models.CharField.... 
    #     ...    ...     ... 
    #      Your fields here