Python 名称';集团';没有定义

Python 名称';集团';没有定义,python,django,Python,Django,Django 1.11 Python 3.6.1 因为我的项目将被部署,我将不得不预定义一些东西。也就是说,我需要几个用户组 因此,我创建了一个目录“deployment”,并将其放在项目目录的旁边 创建新数据库时,我将执行: python manage.py shell < ../deployment/initialize_project.py 此代码不: from django.contrib.auth.models import Group def initialize_rol

Django 1.11

Python 3.6.1

因为我的项目将被部署,我将不得不预定义一些东西。也就是说,我需要几个用户组

因此,我创建了一个目录“deployment”,并将其放在项目目录的旁边

创建新数据库时,我将执行:

python manage.py shell < ../deployment/initialize_project.py
此代码

from django.contrib.auth.models import Group


def initialize_roles():

    Group.objects.create(name="commentator") # line 6

    Group.objects.create(name="contributor") 


initialize_roles() # line 12
回溯:

from django.contrib.auth.models import Group

Group.objects.create(name="commentator") # Can only comment.

Group.objects.create(name="contributor") # Can add, change and delete
                                         # objects.
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/home/michael/workspace/venv/photoarchive/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/home/michael/workspace/venv/photoarchive/lib/python3.6/site-packages/django/core/management/__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/michael/workspace/venv/photoarchive/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/michael/workspace/venv/photoarchive/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/home/michael/workspace/venv/photoarchive/lib/python3.6/site-packages/django/core/management/commands/shell.py", line 101, in handle
    exec(sys.stdin.read())
  File "<string>", line 12, in <module>
  File "<string>", line 6, in initialize_roles
NameError: name 'Group' is not defined

除非你所做的还有更多,否则这感觉就像是要解决的事情。如果还有更多内容,可以在初始设置过程中添加。这将避免担心模型何时可供使用。

我面临类似的情况-这种行为确实很奇怪。看起来在这个函数中,所有导入都丢失了(我用dir()检查了它-它是空的),但我不知道为什么。如果有人能回答那就太好了

我不认为让脚本按函数展开是很优雅的,当我面对同样的事情时,我发现这个线程很有用(danodonovan的回答):。他建议创建
commands
subdir,并向其中添加一个脚本(例如
init\u db
)。然后您可以轻松运行:

./manage.py init_db
这解决了您的问题中所述的问题,但不能回答为什么会发生这种情况。
我希望有人能解释一下。

你删掉的台词中显然有什么内容。你们有并没有在那个函数中重新定义组?在那个函数中并没有重新定义。我想说——尽我最大的能力——这些台词正是我在这里给出的。我只是复制了它们。在整个文件中,除了函数的注释外,没有其他内容。很有趣!在
python manage.py shell
中手动复制粘贴的代码时,这是否起作用。Imean
initialize\u roles()
style不起作用由于手动逐行复制到shell中,它工作得非常好。为什么要在函数中添加导入?Tom,问题不是关于装置。这是python程序的奇怪行为,不是吗?
./manage.py init_db