gpt4 book ai didi

python - Django 代理用户模型示例

转载 作者:太空狗 更新时间:2023-10-29 21:12:13 24 4
gpt4 key购买 nike

我正在尝试向我的 Django 用户模型添加一些自定义逻辑,并尝试使用代理用户模型来实现。

我有一个像这样的模型:

from django.contrib.auth.models import User

class CustomUser(User):
def custom_method(self):
return 'Something'

class Meta:
proxy = True

如果我省略 AUTH_USER_MODEL 设置,那么我可以运行 Django shell 并非常愉快地使用 CustomUser,但是,我假设我可以在我的设置中设置 AUTH_USER_MODEL,这样这就是我的默认用户应用程序(就像当您使用完全自定义的用户模型时),但事实并非如此,当我尝试使用 AUTH_USER_MODEL 设置运行时,我得到:

TypeError: CustomUser cannot proxy the swapped model 'myapp.CustomUser'

这可能吗?谢谢!

最佳答案

AUTH_USER_MODEL 设置为自定义类和使用代理模型是自定义 Django 用户模型行为的两种不同方法。您看到该错误是因为您将它们混合在一起,这是没有意义的。

方法 1:

如果您设置了 AUTH_USER_MODEL='myapp.CustomUser' 那么您不应该代理任何东西。像这样定义您的自定义用户模型:

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
pass

方法 2:

像上面那样代理 Django 用户模型。不要设置 AUTH_USER_MODEL。在您的代码中,确保始终导入和使用您的 CustomUser 类。


在这两种方法中,如果您要开始一个新项目,则首选方法 2,因为它为您提供了最大的控制权。但是,如果您已经有一个正在运行的项目,则迁移到不同的模型会有点棘手,因此使用代理的方法 #1 可能是您能做的最好的。

参见 https://docs.djangoproject.com/en/3.2/topics/auth/customizing/#extending-the-existing-user-model了解更多详情。

关于python - Django 代理用户模型示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com