Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 TypeError:create_superuser()获得意外的关键字参数';电子邮件';_Python_Django_Django Models_Django Admin - Fatal编程技术网

Python TypeError:create_superuser()获得意外的关键字参数';电子邮件';

Python TypeError:create_superuser()获得意外的关键字参数';电子邮件';,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我需要创建自定义用户模型,因为我需要一个名为role的附加字段。如果提供了角色,则应将其分配给用户模型,否则应在用户模型中提供代理作为角色。我继承了AbstractUser。这样在创建用户时,首先密码保存为纯文本,另一个密码是用户无法登录,它表示无法登录。因此,我在文档中尝试了以下方法,但问题是我不需要电子邮件部分,所以我排除了它,只使用了用户名和密码,但出现了错误,如TypeError:create\u superuser()得到了一个意外的关键字参数“email” class UserMan

我需要创建自定义用户模型,因为我需要一个名为role的附加字段。如果提供了角色,则应将其分配给用户模型,否则应在用户模型中提供代理作为角色。我继承了
AbstractUser
。这样在创建用户时,首先密码保存为纯文本,另一个密码是用户无法登录,它表示无法登录。因此,我在文档中尝试了以下方法,但问题是我不需要电子邮件部分,所以我排除了它,只使用了用户名和密码,但出现了错误,如
TypeError:create\u superuser()得到了一个意外的关键字参数“email”

class UserManager(BaseUserManager):
        def create_user(self, username, password=None):
            """
            Creates and saves a User with the given username, date of
            birth and password.
            """
            if not username:
                raise ValueError('Users 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):
        """
        Creates and saves a superuser with the given username and password.
        """
        user = self.create_user(
            username=username,
            password=password,
        )
        user.is_admin = True
        user.save(using=self._db)
        return user


class Role(models.Model):

    ROLE_CHOICES = (
        ('agent', 'Agent'),
        ('agency', 'Agency'),
        ('manufacturer', 'Manufacturer'),
    )
    role = models.CharField(max_length=15, choices=ROLE_CHOICES)

    def __str__(self):
        return self.role


class User(AbstractUser):

    role = models.ForeignKey(
        Role,
        on_delete=models.CASCADE,
        blank=True,
        null=True,
    )

    objects = UserManager()

    def __str__(self):
        return self.username


@receiver(models.signals.post_save, sender=User)
def add_role_to_user(sender, instance, **kwargs):
    print('instance in add role', instance)
    if kwargs.get('created'):
        try:
            role = Role.objects.get(user=instance)
            print('role', role)
        except Role.DoesNotExist:
            Role.objects.create(role="agent")
        try:
            token = Token.objects.get(user=instance)
            print('token', token)
        except Token.DoesNotExist:
            Token.objects.create(user=instance)
由于您未在
创建超级用户()
中使用电子邮件,因此可以将电子邮件添加为密钥工作参数,并将其设置为

def create_superuser(self, username, password, email=None):
    """
    Creates and saves a superuser with the given username and password.
    """
    user = self.create_user(
        username=username,
        password=password,
    )
    user.is_superuser = True
    user.save(using=self._db)
    return user
def create_superuser(self、用户名、密码、电子邮件=None):
"""
使用给定的用户名和密码创建并保存超级用户。
"""
user=self.create\u用户(
用户名=用户名,
密码=密码,
)
user.is_superuser=True
user.save(使用=self.\u db)

return user
谢谢你解决了这个问题,但我知道你没有编辑任何内容的权限。我不明白:(我使用user.is\u superuser=True解决了它。我认为user.is\u admin=True会起作用。