如何正确扩展django用户模型

 yu2531958135 发布于 2023-02-12 15:30

我正在尝试使用其他字段和功能来扩展默认的Django的身份验证模型,因此我决定继续扩展用户模型并编写自己的身份验证后端.

from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User


class MyUser(User):
    access_key = models.CharField(_('Acces Key'), max_length=64)

这是一个基本的代码,但在尝试syncdb时,我正在考虑一个谷歌不知道的奇怪错误:

CommandError: One or more models did not validate: core.sldcuser: 'user_ptr' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.

在我的settings.py中,我添加了我想要的内容:

AUTH_USER_MODEL = 'core.MyUser'

有没有人偶然发现这个错误?

或者也许我应该使用一对一的方式,或1t1与代理的混合?

1 个回答
  • 你现在正在做的是创建一个User的子类,它是非抽象的.这意味着创建一个表,该表具有指向表上主键的ForeignKey调用.但是,您通过设置执行的操作是告诉不要创建该表,因为您将使用它.可以理解Django有点困惑:Puser_ptrauth.UserAUTH_USER_MODELdjango.contrib.authMyUser

    你需要做的是从AbstractUser或继承AbstractBaseUser.

    使用AbstractUser如果希望用户已经一切,只是想添加更多的字段

    使用AbstractBaseUser,如果你想从一个干净的状态开始,只有在继承的用户通用功能,而且实现自己的领域.

    REF:

    https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model

    https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model

    2023-02-12 15:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有