是否可以在django中创建自己的createsuperuser命令?

时间:2015-10-19 12:58:38

标签: django django-admin django-authentication

我正在制作一个应用程序,其中我制作了自定义'User'模型,该模型将电子邮件作为用户名,并且依赖于另一个名为'Company'的模型。运行命令'python manage.py createsuperuser'时,我需要django首先要求我公司并创建公司实例,而不是询问用户模型字段,其中'company'是外键,然后用户可能提供公司ID {{1}用户在制作公司对象时已经创建的。

我正在尝试通过在我的应用中创建管理文件夹来实现上述功能,但它似乎无法正常工作。

任何人都可以告诉我正确的做法。

先谢谢。

2 个答案:

答案 0 :(得分:4)

Most definitelycreatesuperuser功能并不太特别;它只是创建一个is_superuser flag设置为True的用户。您可以按照第一个链接中的说明编写自己创建用户的方法,并设置超级用户标志以及您想要的任何其他内容。

答案 1 :(得分:0)

是的,您可以,这些命令称为管理命令,您可以在文档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

Django's createsuperuser的完整源代码可以在Github上找到。