我是django的新手。我的django应用程序在docker中运行,我需要创建超级用户而不使用我尝试使用此代码initadmin.py(如下所示)创建的createsuperuser命令,但是我无法使用“ python manage.py”在bash文件中运行它initadmin”。它不起作用!
initadmin.py:
from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
from django.conf import settings
class Command(BaseCommand):
def handle(self, *args, **options):
if User.objects.count() == 0:
for user in settings.ADMINS:
username = 'admin'
email = 'admin.com'
password = 'admin'
print('Creating account for %s (%s)' % (username, email))
admin = User.objects.create_superuser(email=email, username=username, password=password)
admin.is_active = True
admin.is_admin = True
admin.save()
else:
print('Admin accounts can only be initialized if no Accounts exist')
有人可以告诉我我在做什么错吗?有什么更好的方法以编程方式创建超级用户?
答案 0 :(得分:0)
这是create_superuser
的定义:
请注意,
您可以实际更改顺序,我刚刚尝试过。username
,email
,password
不是关键字参数,调用此方法时不能更改顺序。
def create_superuser(self, username, email, password, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
if extra_fields.get('is_staff') is not True:
raise ValueError('Superuser must have is_staff=True.')
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(username, email, password, **extra_fields)
只需在您的代码中执行此操作:
User.objects.create_superuser(username, email, password)
is_admin
不是默认用户模型的属性,您是说is_staff
?
无论如何,您都不需要设置它们,因为create_superuser
会为您设置它们。
您也不需要致电save
。
PROJECT_ROOT/
YOUR_APP/
__init__.py
models.py
management/
commands/
initadmin.py
tests.py
views.py