Can't create superuser
(venv) PS C:\Users\Vikram Chowdhury\Desktop\wagtail_crm_react\Django-CRM> python .\manage.py createsuperuser Traceback (most recent call last): File "C:\Users\Vikram Chowdhury\Desktop\wagtail_crm_react\Django-CRM\venv\lib\site-packages\django\db\models\options.py", line 681, in get_field return self.fields_map[field_name] KeyError: 'username'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File ".\manage.py", line 24, in
I noticed that django.contrib.admin is not listed in INSTALLED_APPS. @ashwin31, don't we need a superuser?
this is not a solution, but i was able to create the user following these steps:
- create a CustomUserManager to take over the creation of superusers:
class CustomUserManager(BaseUserManager):
def create_superuser(self, email, password=None, **extra_fields):
if not email:
raise ValueError("User must have an email")
if not password:
raise ValueError("User must have a password")
user = self.model(
email=self.normalize_email(email)
)
user.set_password(password)
user.is_superuser = True
user.staff = True
user.active = True
user.save(using=self._db)
return user
- replace the legacy user manager in the User class in common.models.User
from
class User(AbstractBaseUser, PermissionsMixin):
id = models.UUIDField(
default=uuid.uuid4, unique=True, editable=False, db_index=True, primary_key=True
)
email = models.EmailField(_("email address"), blank=True, unique=True)
profile_pic = models.CharField(
max_length=1000, null=True, blank=True
)
activation_key = models.CharField(max_length=150, null=True, blank=True)
key_expires = models.DateTimeField(null=True, blank=True)
is_active = models.BooleanField(default=True)
USERNAME_FIELD = "email"
# REQUIRED_FIELDS = ["username"]
objects = UserManager()
class Meta:
verbose_name = "User"
verbose_name_plural = "Users"
db_table = "users"
ordering = ("-is_active",)
def __str__(self):
return self.email
to:
class User(AbstractBaseUser, PermissionsMixin):
id = models.UUIDField(
default=uuid.uuid4, unique=True, editable=False, db_index=True, primary_key=True
)
email = models.EmailField(_("email address"), blank=True, unique=True)
profile_pic = models.CharField(
max_length=1000, null=True, blank=True
)
activation_key = models.CharField(max_length=150, null=True, blank=True)
key_expires = models.DateTimeField(null=True, blank=True)
is_active = models.BooleanField(default=True)
USERNAME_FIELD = "email"
# REQUIRED_FIELDS = ["username"]
objects = CustomUserManager()
class Meta:
verbose_name = "User"
verbose_name_plural = "Users"
db_table = "users"
ordering = ("-is_active",)
def __str__(self):
return self.email
this way you can create the superuser.
@ashwin31: if the above counts as a solution i'll be happy to provide a clean pull request
I tried this. But I am still not able to login to the wagitail admin panel.
thank you, it helped, it’s strange that they didn’t make these changes as a fix