Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不使用django.contrib中的模型的情况下创建自定义用户?_Python_Django_Django Models_Django Views - Fatal编程技术网

Python 如何在不使用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.contrib.auth.models不够灵活,无法扩展

与django.contrib模型相比,我使用的是具有完全不同表的遗留mysql数据库。老板告诉我不要碰它,因为它对我们的生意非常重要

最后,我想知道如何创建自定义用户,该用户应该被相互排除在django.contrib模型之外,但仍然可以用于令牌身份验证


我是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中分享我的实现,这样就没有人会再次陷入这个焦油坑。