Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
为什么要扩展Django用户模型?它是否比使用一对一链接和用户模型(配置文件)更好?_Django_Model_Profile_Extend - Fatal编程技术网

为什么要扩展Django用户模型?它是否比使用一对一链接和用户模型(配置文件)更好?

为什么要扩展Django用户模型?它是否比使用一对一链接和用户模型(配置文件)更好?,django,model,profile,extend,Django,Model,Profile,Extend,这是我在这里的第一个问题,尽管如此,S.O.是我在使用Django开发编码技能时的主要参考点和支持点 提前感谢所有参与SO的人 我的主要问题是:根据您的经验,在哪些情况下需要扩展用户模型?这是一件平常的事吗。。。我读过的所有教程和博客都说。。。“例如,如果您想使用电子邮件而不是用户名”。但这听起来不像是我真正的理由,我还没有找到其他理由 如果我想使用电子邮件作为用户名,我可以创建一个用户创建表单,其中包含一个字段来获取用户名,并且只允许使用电子邮件。这能很好地解决问题,对吗 就我而言,我遵循Dj

这是我在这里的第一个问题,尽管如此,S.O.是我在使用Django开发编码技能时的主要参考点和支持点

提前感谢所有参与SO的人

我的主要问题是:根据您的经验,在哪些情况下需要扩展用户模型?这是一件平常的事吗。。。我读过的所有教程和博客都说。。。“例如,如果您想使用电子邮件而不是用户名”。但这听起来不像是我真正的理由,我还没有找到其他理由

如果我想使用电子邮件作为用户名,我可以创建一个用户创建表单,其中包含一个字段来获取用户名,并且只允许使用电子邮件。这能很好地解决问题,对吗

就我而言,我遵循Django的官方建议:

强烈建议设置自定义用户模型,即使 默认用户模型对您来说已经足够了。此模型的行为 与默认用户模型相同,但您可以自定义 如果将来有需要的话,它将在将来使用

所以我这样做了:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass
我准备好了,但准备好了什么?请照亮我

我问题的第二部分是:让我们想象一下,将来我想注册更多关于我博客用户的信息(国家、性别等)。。。是否可以创建一个概要文件表,并将它与我的扩展用户模型(它什么都不做,只是为将来做好了准备)建立1对1的关系?既然我已经删除并再次创建了数据库,我现在应该这样做吗

非常感谢,如果我写得太多,我很抱歉

致以最良好的祝愿,
goka.

如果您的网站需要收集更多用户信息,如公司、电话、邮政编码。另外,可能您需要对用户进行分类,比如,级别1,级别2,用户模型中没有定义的东西。然后,最好创建一个纵断面模型


如果您已经注册了一些用户,那么您添加了新的配置文件模型,这可能会导致您未来的编码非常混乱,例如,一年后,您或其他软件工程师可能会假设所有用户都有“配置文件”,并直接使用user.profile.something而不检查配置文件是否存在或用户,这将引发异常

如果您的网站需要收集更多用户信息,如公司、电话、邮政编码。另外,可能您需要对用户进行分类,比如,级别1,级别2,用户模型中没有定义的东西。然后,最好创建一个纵断面模型


如果您已经注册了一些用户,那么您添加了新的配置文件模型,这可能会导致您未来的编码非常混乱,例如,一年后,您或其他软件工程师可能会假设所有用户都有“配置文件”,并直接使用user.profile.something而不检查配置文件是否存在或用户,这将引发异常

谢谢苗。给定这两个选项,使用概要文件模型或扩展用户模型并在其中添加额外字段。我更喜欢第二个。为什么?我觉得更容易。。。希望不要犯错误,因为这是一个新手的决定,这就是我写这个问题的原因。我想避免配置文件解决方案,因为我认为信号更复杂。现在,我已经扩展了我的用户模型,并成功地为我的新字段向管理页面添加了新的部分。我想(并希望)除了这个,我不需要其他任何东西。通常扩展用户模型不会有任何问题。创建新用户时,请不要忘记此“扩展”模型,并保存此模型。谢谢。给定这两个选项,使用概要文件模型或扩展用户模型并在其中添加额外字段。我更喜欢第二个。为什么?我觉得更容易。。。希望不要犯错误,因为这是一个新手的决定,这就是我写这个问题的原因。我想避免配置文件解决方案,因为我认为信号更复杂。现在,我已经扩展了我的用户模型,并成功地为我的新字段向管理页面添加了新的部分。我想(并希望)除了这个,我不需要其他任何东西。通常扩展用户模型不会有任何问题。创建新用户时,不要忘记此“扩展”模型,并保存此模型。