Django: NameError: имя 'Категория' не определено - PullRequest
0 голосов
/ 28 июня 2010

Я тренируюсь на Django и использую некоторое онлайн-руководство для создания веб-блога.С первым проектом все прошло гладко, но когда я попробовал второй, разработав первый вид, было следующее утверждение:

categories   = models.ManyToManyField(Category, related_name ="packages")

В этом уроке проверка модели дает 0 ошибок, но когда явыполнила проверочную команду, которую она мне дала: NameError: имя 'Категория' не определено

Я трижды проверил синтаксис всего файла, и не было ни одной синтаксической ошибки, нет дополнительного импортаупоминается в учебнике.

Что не так?

Ответы [ 2 ]

4 голосов
/ 28 июня 2010

Звучит так, как будто вы новичок в Python, поскольку вы говорите: «Я трижды проверил синтаксис всего файла, и не было ни одной синтаксической ошибки, в этом руководстве нет дополнительных импортов».

Имейте в виду, что в Python многие ошибки, связанные с именами, которые будут обнаруживаться во время компиляции в таких языках, как C ++, вместо этого обнаруживаются во время выполнения. Это немного сбило меня с толку, когда я начал использовать Python. Ошибки во время выполнения могут просто указывать на простую опечатку и т. Д. (Если это звучит противно, не волнуйтесь - есть бесплатные инструменты для проверки вашей программы в качестве компилятора на такие вещи, как в некоторых других языках)

Категория определена в том же файле, в котором появляется эта строка?

Если нет, вы должны импортировать имя категории. Предположим, что Категория определена в другом файле, argh.py.

import argh

не годится.

Вам нужно будет сделать

from argh import Category

(или изменить код для ссылки на argh.Category)

В любом случае, на ваш вопрос нельзя ответить лучше, если вы не предоставите больше информации. Эта линия не проблема. Проблема, вероятно, с определением категории. Где определение категории? Категория - это еще один модельный класс. Там должен быть код вроде

class Category:
     #....

И он должен быть либо в том же файле, либо, если он находится в файле с именем "тюрьма.py", то файл, над которым вы работаете, должен содержать

from prison import Category
0 голосов
/ 28 июня 2010

Было бы полезно добавить ссылку на «некоторые».

Однако проблема в том, что вы не импортировали категорию или определяете категорию в модели с указанным ключом.

...