python - django框架使用自定义的类

 云匢天仙草 发布于 2022-10-28 16:11

1.我想用自定义的User类,而不想用默认User类,按照官方文档的demo做了下(https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#auth-custom-user),各种奇怪的问题,找不到属性什么的。
下面是我的demo:

from __future__ import unicode_literals

from django.db import models

from django.contrib.auth.models import AbstractBaseUser

from django.contrib.auth.models import BaseUserManager


# Create your models here.

class UserManager(BaseUserManager):
    """
    test custom user manager
    """


    def __init__(self):
        pass

    def create_user(self, username, password=None):
        """
        create user
        :param username:
        :param password:
        :return:
        """
        if not username:
            raise ValueError('User must have an username')

        user = self.model(username=username)
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, username, password):
        """
        create superuser
        :param username:
        :param password:
        :return:
        """
        user = self.create_user(username=username, password=password)
        user.is_admin = True
        user.save(using=self._db)
        return user


class User(AbstractBaseUser):
    """
    test custom user model
    """

    def __init__(self):
        pass

    username = models.CharField(max_length=128, unique=True)
    # is_admin = models.BooleanField(default=False)

    objects = UserManager()       

    USERNAME_FIELD = "username"  #username列

    class Meta:
        db_table = "testdata_user"  #表名
报错就是
AttributeError: 'UserManager' object has no attribute 'name'

调了很久也google过,就是不知道哪里错了,没头绪,请教下各位在生产下自定义User类的经验,能够指出小弟的错误,最好可以给出个demo,让我看看我哪里弄错了。感激不尽

3 个回答
  • 一个不成熟的小建议 是手动做映射。

    2022-11-12 01:44 回答
  • UserManager定义了空的__init__ 方法,但没有调用父类的方法,这样导致无法正常初始化对象.

    解决方法:

    1. 去掉__init__方法

    2. 调用父类的__init__方法

    def __init__(self):
        super(BaseUserManager, self).__init__()
    

    注意

    1. User __init__也没有调用父类的__init__,也有可能出现相同的问题。

    2. 检查各个方法不调用父类方法是否可行, 如create_user,create_superuser等等

    python super的作用

    2022-11-12 01:44 回答
  • 有没有在settings.py中加入AUTH_USER_MODEL = 'user.User'这个

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