Django 1,11Bezeichnung ‚Gruppe‘ ist nicht
Python 3.6.1
Für mein Projekt eingesetzt werden soll, definiert Ich werde einige Dinge vordefinieren müssen. Nämlich, ich brauche ein paar Gruppen für Benutzer.
Also, ich habe ein Verzeichnis "Bereitstellung" und legte es neben dem Projektverzeichnis.
Wenn eine neue Datenbank erstellt wird, werde ich nur ausführen:
python manage.py shell < ../deployment/initialize_project.py
Dieser Code Werke:
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.
Dieser Code nicht:
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:
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
I markierte Linie 6 und 12 in dem obigen Code (als Inline-Kommentare).
Ich habe versucht, pdb.set_trace() zu verwenden, aber der gleiche Fehler erscheint. Als wäre pdb nicht definiert.
Ich habe auch versucht, manage.py auf initialize_project.py zu füttern, aber einfach Python manage.py Shell ausführen und den Code Zeile für Zeile einspeisen. Es hat perfekt funktioniert.
Können Sie mir einen Tritt geben?
SPÄTER
ADDED Dies funktioniert:
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()
In den Linien, die Sie herausgeschnitten haben, ist offensichtlich etwas los. Definieren Sie die Gruppe innerhalb dieser Funktion zufällig neu? –
Keine Neudefinition innerhalb dieser Funktion. Ich würde sagen - nach besten Kräften -, dass diese Zeilen genau so sind, wie ich sie hier gebe. Ich habe sie nur kopiert. In der ganzen Datei gibt es nichts anderes als einen Kommentar für die Funktion. – Michael
Interessant! Funktioniert das, wenn Sie den Code manuell in 'python manage.py shell' kopieren. Imean 'initialize_roles()' Stil, der nicht funktioniert – rrmerugu