Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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:AbstractBaseUser和Error=';属性错误:can';t设置属性';_Python_Django - Fatal编程技术网

Python Django:AbstractBaseUser和Error=';属性错误:can';t设置属性';

Python Django:AbstractBaseUser和Error=';属性错误:can';t设置属性';,python,django,Python,Django,我是django的新手。我编写django用户模型和用户管理器如下: 用户管理器: class UserManager(BaseUserManager): def create_user(self, username, tel_number, password=None): """ Creates and saves a User with the given email and password. """ if not u

我是django的新手。我编写django用户模型和用户管理器如下:

用户管理器:

class UserManager(BaseUserManager):
    def create_user(self, username, tel_number, password=None):
        """
        Creates and saves a User with the given email and password.
        """
        if not username:
            raise ValueError('Users must have an email address')

        user = self.model(
            username=self.normalize_email(username),
        )

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

    def create_superuser(self, username, tel_number, password):
        """
         Creates and saves a superuser with the given email and password.
        """
        user = self.create_user(username, tel_number=tel_number,
                                password=password
                                )
        user.is_admin = True
        user.save(using=self._db)
        return user
我的用户模型是:

class Users(AbstractBaseUser, PermissionsMixin):
    object = UserManager()
    username = models.EmailField(_('UserName'), max_length=75, null=False, blank=False, unique=True)
    first_name = models.CharField(_('FirstName'), max_length=50, null=True, blank=True)
    last_name = models.CharField(_('LastName'), max_length=70, null=True, blank=True)
    tel_number = models.IntegerField(_('TelNumber'), null=True, blank=True)
    address = models.CharField(_('Address'), max_length=250, null=True, blank=True)
    user_image = models.ImageField(_('UserImage'), upload_to='user_avatar', blank=True, null=True)
    date_time = models.DateTimeField(_('DateTime'), auto_now=True, null=True, blank=True)
    activated = models.BooleanField(_('Activated'), default=False)
    is_admin = models.BooleanField(_('is_admin'), default=False)

    def __unicode__(self):
        return self.username

    def get_full_name(self):
        return self.first_name + " " + self.last_name

    class Meta:
        ordering = ['-id']

    @property
    def is_superuser(self):
        return self.is_admin

    @property
    def is_staff(self):
        return self.is_admin

    def has_perm(self, perm, obj=None):
        return self.is_admin

    def has_module_perms(self, app_label):
        return self.is_admin

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['tel_number']
现在我想创建超级用户,我给出了以下错误:

文件“E:\AB- Python\Ads\lib\site packages\django\contrib\auth\management\commands\createsuperuser.py”,句柄中的第149行 self.UserModel.\u default\u manager.db\u manager(数据库).创建超级用户(**用户数据)

文件“E:\AB-Python\Ads\project\dijiads\users\models.py”,第31行, 在创建超级用户中 密码=密码

文件“E:\AB-Python\Ads\project\dijiads\users\models.py”,第19行, 在创建用户 用户名=self.normalize_电子邮件(用户名)

文件“E:\AB- Python\Ads\lib\site packages\django\db\models\base.py”,第470行,在 init setattr(self,field.attname,val)属性错误:无法设置属性

怎么了?
如果您对编写此模型有更好的建议,请告诉我。

您可以尝试删除:

@property
def is_superuser(self):
    return self.is_admin

来自
用户
is_superuser
是用户类继承的
permissionsmixin
中的一个字段。

我希望上面列出的所有方法和属性都正确地缩进到它们所属的类下。此外,为了避免以后的麻烦,在基类
类用户之前列出mixin(PermissionsMixin,AbstractBaseUser):
。要知道原因,请阅读您应该删除属性:is\u staff和is\u superuser..或者您应该添加@property setters。。