当前位置: 首页 > 知识库问答 >
问题:

Django-属性错误

长孙弘盛
2023-03-14

我创建了我的自定义用户模型。在执行迁移时,我会收到一个ATRIBUTEERROR

from django.db import models
from time import timezone
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.core.mail import send_mail
from django.utils.http import urlquote
from django.utils.translation import ugettext_lazy as _


class CustomUsermanager(BaseUserManager):
    def _create_user(self, is_anonymous, first_name, last_name, email, username, password, home_address, user_type, image_path):
        now = timezone.now()

        if not email:
            raise ValueError('The gives emial must be set')

        email = self.normalize_email(email)
        user = self.model(
            is_anonymous=is_anonymous,
            first_name=first_name,
            last_name=last_name,
            email=email,
            username=username,
            home_address=home_address,
            user_type=user_type,
            image_path=image_path,
            created_time=now,
            last_login=now
        )

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

    def create_a_admin(self, first_name, last_name, email, username, password, home_address, image_path):
        return self._create_user(1, first_name, last_name, email, username, password, home_address, 0, image_path)

    def create_a_nonanonymous_patient(self, first_name, last_name, email, username, password, home_address, image_path):
        return self._create_user(0, first_name, last_name, email, username, 1, password, home_address, 1, image_path)

    def create_an_anonymous_patient(self, first_name, last_name, email, username, password, home_address, image_path):
        return self._create_user(1, first_name, last_name, email, username, 1, password, home_address, 1, image_path)

    def create_a_nonanonymous_helper(self, first_name, last_name, email, username, password, home_address, image_path):
        return self._create_user(0, first_name, last_name, email, username, 2, password, home_address, 2, image_path)

    def create_an_anonymous_helper(self, first_name, last_name, email, username, password, home_address, image_path):
        return self._create_user(1, first_name, last_name, email, username, 2, password, home_address, 2, image_path)

    def create_a_prof(self, first_name, last_name, email, username, password, home_address, image_path):
        return self._create_user(0, first_name, last_name, email, username, 3, password, home_address, 3, image_path)


class CustomUser(AbstractBaseUser):
    is_anonymous = models.BooleanField()
    username = models.CharField(max_length=255, unique=True)
    first_name = models.CharField(max_length=255, blank=True)
    last_name = models.CharField(max_length=255, blank=True)
    email = models.EmailField(blank=True, unique=True)
    home_address = models.CharField(max_length=255, blank=True)
    user_type = models.IntegerField(1)
    image_path = models.CharField(max_length=500, blank=True)
    created_time = models.TimeField()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['username', 'home_address', 'first_name', 'last_name', 'user_type']

    objects = CustomUsermanager()

    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')

    def get_absolute_url(self):
        return '/users/%s/' % urlquote(self.email)

    def get_full_name(self):
        full_name = '%s %s' % (self.first_name, self.last_name)
        return full_name.strip()

    def get_short_name(self):
        return self.first_name

    def get_email_user(self, subject, message, from_email=None):
        send_mail(subject, message, from_email, [self.email])

例外是:

回溯(最近一次呼叫最后一次):

文件"manage.py",第22行,execute_from_command_line(sys.argv)

文件“C:\Users\Nutzer\AppData\Local\Programs\Python\Python36-32\lib\site packages\django\core\management\uu_init\u_.py”,第363行,在“从命令行执行”实用程序中。执行()

文件“C:\Users\Nutzer\AppData\Local\Programs\Python\Python36-32\lib\site packages\django\core\management\uu_init\u_.py”,第355行,在execute self中。fetch_命令(子命令)。从_argv(self.argv)运行_

文件“C:\Users\Nutzer\AppData\Local\Programs\Python\Python36-32\lib\site packages\django\core\management\base.py”,第283行,在运行时从\u arg v self。执行(*args,**cmd_选项)

文件"C:\用户\Nutzer\AppData\本地\程序\Python\Python36-32\lib\site-包\django\core\管理\base.py",第327行,在执行self.check()

文件“C:\Users\Nutzer\AppData\Local\Programs\Python\Python36-32\lib\site packages\django\core\management\base.py”,第359行,检查包括部署检查=包括部署检查,

文件“C:\用户\Nutzer\AppData\本地\程序\Python\Python36-32\lib\site-包\django\core\管理\base.py”,第346行,_run_checks返回checks.run_checks(**kwargs)

文件"C:\用户\Nutzer\AppData\本地\程序\Python\Python36-32\lib\site-包\django\core\检查\registry.py",第81行,run_checksnew_errors=检查(app_configs=app_configs)

文件"C:\用户\Nutzer\AppData\本地\程序\Python\Python36-32\lib\site-包\django\contrib\auth\checks.py",第77行,在check_user_model if is实例(cls().is_anonymous,方法类型):

文件“C:\Users\Nutzer\AppData\Local\Programs\Python\Python36-32\lib\site packages\django\contrib\auth\base\u user.py”,第68行,在init super(AbstractBaseUser,self)中。初始(*args,**kwargs)

文件“C:\Users\Nutzer\AppData\Local\Programs\Python\Python36-32\lib\site packages\django\db\models\base.py”,第557行,在init\u setattr(self,field.attname,val)中

AttributeError:无法设置属性

有人能指出哪里错了吗?

共有1个答案

云飞翮
2023-03-14
user = self.models(
        is_anonymous=is_anonymous,
        first_name=first_name,
        last_name=last_name,
        email=email,
        username=username,
        home_address=home_address,
        user_type=user_type,
        image_path=image_path,
        created_time=now,
        last_login=now
    )

替换模型

 类似资料:
  • 问题内容: 我正在尝试根据的特定字段的值过滤Django中的表。 例如,我有两个模型: 我想根据相关项目的名称过滤我的资产列表。 目前,我正在执行两个查询: 我想知道是否有一种方法可以在主查询中指定这种过滤? 问题答案:

  • 问题内容: 我正在使用Google App Engine和Django模板。 我有一个想要显示对象的表格,如下所示: Django模板是: 现在Django文档指出当它看到一个。在变量中 它尝试几种方法来获取数据,其中之一是字典查找,这正是我想要的,但似乎没有发生… 问题答案: 我找到了一种在内部获取变量的“更好”的解决方案,虽然不是最好的方法,但是它可以工作。 你将自定义过滤器安装到Django

  • 当我执行代码时,我得到一个错误, 属性错误:“WebDriver”对象没有属性“find_element_by_xpath”

  • 当我使用: 我得到这个错误: 完整代码: 梯度提升分类器模型为:

  • 问题内容: 我想通过串联字符串过滤某些数据库对象。 正常的SQL查询为: 在模型中,我创建了一个名为PersonObjects的管理器: 我也在我的模型中配置了这个: 现在,访问fullName可用于单个对象: 但这在过滤器中不起作用: 这是错误还是功能?我怎样才能解决这个问题? 谢谢。 问题答案: 这不是错误。仅检查模型定义,因此不会将其识别为已声明的字段(因为它不是-这是查询中的额外参数)。

  • 问题内容: 我是第一次使用Django,并且正在尝试构建API,我正在遵循一些教程和示例,并且可以正常使用,但是在安装所有要求和项目后,现在我正在Raspberry Pi中运行该项目。因以下错误而失败: 我的views.py具有以下代码: 我真的不知道为什么可以在笔记本电脑上工作,但不能在Raspberry Pi上工作。 这是否发生在某人或任何人都知道为什么会发生这种情况? 非常感谢! 编辑: 这