是否有可能在django中创建自己的createsuperuser命令?
问题描述:
我正在开发一款应用程序,在该应用程序中,我制作了自定义'User'
模型,该模型将电子邮件用作用户名,并取决于称为'Company'
的另一模型。在运行命令'python manage.py createsuperuser'
时,我需要django首先要求我为公司创建公司实例,然后请求用户模型字段,其中'company'
是外键,然后用户提供公司对象时创建的用户已创建的公司ID可能为'1'
。是否有可能在django中创建自己的createsuperuser命令?
我想通过在我的应用程序中创建管理文件夹来实现上述,但它似乎并不工作。
任何人都可以告诉我正确的方法来做到这一点。
在此先感谢。
答
Most definitely! createsuperuser
函数不是太特别;它只是创建一个is_superuser
flag设置为True
的用户。按照第一个链接中的说明,您可以编写自己的方法来创建用户并设置超级用户标志以及任何您想要的内容。
答
是的,你可以,这些命令被称为管理命令,你可以写下面的指南中的文档Writing custom django-admin commands
要求用户输入可以input()
函数来完成一个:
#/django/contrib/auth/management/commands/createsuperuser.py
from django.utils.six.moves import input
def get_input_data(self, field, message, default=None):
"""
Override this method if you want to customize data inputs or
validation exceptions.
"""
raw_value = input(message)
if default and raw_value == '':
raw_value = default
try:
val = field.clean(raw_value, None)
except exceptions.ValidationError as e:
self.stderr.write("Error: %s" % '; '.join(e.messages))
val = None
return val
完整的源代码可以在Github上找到Django's createsuperuser。