为了账号安全,请及时绑定邮箱和手机立即绑定

使用 python manage.py 创建超级用户在 Django 中自定义消息

使用 python manage.py 创建超级用户在 Django 中自定义消息

吃鸡游戏 2022-07-26 10:48:35
在一个项目中需要用户名是自动生成的代码。为此,我按照描述的要求制作了一个自定义用户模型。一切正常,但问题是当我尝试使用创建超级用户时python manage.py createsuperuser正如我所描述的,用户名是一个自动生成的字段。但是控制台要求我输入用户名。创建超级用户帐户后,需要打印用户代码,因为我需要登录代码以及成功创建超级用户。我怎样才能获得这个功能?我在谷歌上搜索,但找不到任何合适的解决方案。这是我的模型:class User(AbstractBaseUser, PermissionsMixin):"""Custom user model"""code = models.CharField(max_length=20, unique=True, blank=False)email = models.EmailField(max_length=255, unique=True, null=True)name = models.CharField(max_length=255)address = models.CharField(max_length=255, blank=True)nid = models.CharField(max_length=30, blank=True)profile_pic = models.CharField(max_length=255, blank=True)gender = models.CharField(max_length=10, choices=[('Male', 'Male'), ('Female', 'Female'), ('Other', 'Other')])is_active = models.BooleanField(default=True)is_staff = models.BooleanField(default=False)is_admin = models.BooleanField(default=False)objects = UserManager()USERNAME_FIELD = 'code'REQUIRED_FIELDS = ['name']这是我的自定义用户管理器:class UserManager(BaseUserManager):use_in_migrations = Truedef create_user(self, password, **extra_fields):    """Create new user with auto-generated code and password"""    if 'name' not in extra_fields.keys():        raise ValueError('Name must be needed')    code = code_generator.generate_employee_code(extra_fields['name'][:2])    user = self.model(code=code, **extra_fields)    user.set_password(password)    if 'email' in extra_fields.keys():        email = self.normalize_email(extra_fields['email'])        user.email = email    try:        user.save(using=self._db)    except IntegrityError as e:        raise ValueError("Email has already been used")    return userdef create_superuser(self, name, password):    """Create and save super user"""    user = self.create_user(password=password, name=name)    user.is_staff = True    user.is_superuser = True    user.is_admin = True    user.save(using=self._db)    return user
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

这可以通过更改源代码来实现,但通常不是一个好主意。

如果您仍然想尝试一下,那就去吧。

找到这个文件 createsuperuser.py (site-packages->django->contrib->auth->management>commands) 并在正确的地方添加代码。

class Command(BaseCommand):
    ...
    ...
    def handle(self, *args, **options):
    ...
    ...
        if username:
            ...
            if options['verbosity'] >= 1:
                ...
                self.stdout.write("User name:" + username) # add this code

同样,我并不是说这是一个好主意,但如果我绝望了,我会去的。此外,由于站点包不是存储库的一部分,因此您必须在部署应用程序的每台机器上执行此操作。


查看完整回答
反对 回复 2022-07-26
  • 1 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号