【问题标题】:Is it possible to make my own createsuperuser command in django?是否可以在 django 中创建我自己的 createsuperuser 命令?
【发布时间】:2016-01-17 20:07:19
【问题描述】:

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

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

谁能告诉我正确的做法。

提前致谢。

【问题讨论】:

    标签: django django-admin django-authentication


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      可以,这些命令称为管理命令,您可以在文档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 上找到。

      【讨论】:

        猜你喜欢
        • 2021-12-26
        • 2016-08-10
        • 1970-01-01
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 2020-06-19
        • 2015-07-01
        相关资源
        最近更新 更多