Python 如何在不使用django.contrib中的模型的情况下创建自定义用户?
我尝试创建自定义用户进行身份验证 问题是,django.contrib.auth.models不够灵活,无法扩展 与django.contrib模型相比,我使用的是具有完全不同表的遗留mysql数据库。老板告诉我不要碰它,因为它对我们的生意非常重要 最后,我想知道如何创建自定义用户,该用户应该被相互排除在django.contrib模型之外,但仍然可以用于令牌身份验证Python 如何在不使用django.contrib中的模型的情况下创建自定义用户?,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我尝试创建自定义用户进行身份验证 问题是,django.contrib.auth.models不够灵活,无法扩展 与django.contrib模型相比,我使用的是具有完全不同表的遗留mysql数据库。老板告诉我不要碰它,因为它对我们的生意非常重要 最后,我想知道如何创建自定义用户,该用户应该被相互排除在django.contrib模型之外,但仍然可以用于令牌身份验证 我是Django的初学者,目前我还从官方文档中找到了有用的建议。如果你想要一个全新的模型,你可以根据AbstractUser创建
我是Django的初学者,目前我还从官方文档中找到了有用的建议。如果你想要一个全新的模型,你可以根据AbstractUser创建你自己的,这样你就可以添加任何你想要的
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
# ...
# your new fields here
# ...
如果不允许这样做,并且必须使用默认模型,则可以使用链接到默认用户的新模型对其进行扩展。那么您想要的是全新的用户模型?提供了许多有关如何和如何使用默认用户模型的信息。您认为不够灵活而无法扩展是什么意思
AbstractBaseUser
允许您创建完全自定义的模型。我们将其与DRF一起使用,令牌身份验证工作正常。当我扩展用户模型时,它还绑定到contrib.admin、contrib.session和contrib.contenttype。我发现将这些应用程序迁移到遗留数据库既乏味又错误。我认为必须使用某种方式链接到django contrib等的模型,因为它使用自己的身份验证引擎,。。。因此,如果您不想这样做,我想您必须自己编写?如果我扩展AbstractUser,它将在某个地方修改contrib.admin/contrib.session/contrib.contenttype表。我觉得从Django标准来看,将这些表迁移到遗留数据库是完全错误的。当您试图访问管理页面/销毁用户实例时,通常会发生这种情况。您试图实现什么?您有一个要导入Django项目的遗留数据库,为此您必须实现与数据库中的数据相匹配的模型?更新:在我仔细阅读之后,我意识到使用OneToOneField扩展它是最干净的方法。我接受了这个答案,当我完成创建后,我可能会在github中分享我的实现,这样就没有人会再次陷入这个焦油坑。