2017-04-11 22 views
1

Django的1.11名称 '集团' 没有定义

的Python 3.6.1

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

所以,我做了一个目录下的“部署”,并把它放在旁边,项目的目录。

当一个新的数据库将被创建的,我只是执行:

python manage.py shell < ../deployment/initialize_project.py 

此代码作品:

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. 

此代码

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 

回溯:

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 

我标记上面的代码线6和12(内联的评论)。

我试图用pdb.set_trace(),但同样的错误出现。就好像pdb没有定义一样。

我也尽量不喂manage.py上initialize_project.py,只是运行python manage.py壳和换行的代码行。它工作完美。

你能在这里给我一个踢吗?

后来添加

这工作:

def initialize_roles(): 
    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. 

initialize_roles() 
+1

您编辑过的行中显然会出现一些问题。你有没有重新定义组内的功能? –

+0

该函数内部没有重定义。我会尽我所能地说 - 这些线条正如我在这里给他们的。我只是复制它们。在整个文件中,除了该函数的评论之外没有别的。 – Michael

+0

有趣!当在python manage.py shell中手动复制粘贴代码时,这会起作用吗? Imean'initialize_roles()'不起作用的样式 – rrmerugu

回答

0

除非有更多的你在做什么,这种感觉像什么fixtures是为了解决。如果还有更多内容,您可以添加custom data migrations作为初始设置过程的一部分。这将避免担心何时可以使用模型。

+0

汤姆,问题不在于灯具。这是一个python程序的奇怪行为,不是吗? – Michael