Django: NameError: name 'Category' is not defined
I'm practicing on Django and using some online tutorial to build a web blog. It went smoothly with the first project, yet when I tried the 2nd one, through developing the first view, there was this statement:
categories = models.ManyToManyField(Category, related_name ="packages")
In the tutorial, validating the model gives 0 errors, yet when I ran validating command it gave me :NameError: name 'Category' is not defined
I triple checked the syntax of all the file and there was no single开发者_StackOverflow syntax error, there is no additional imports mentioned in the tutorial.
What's wrong ?
It sounds like you may be new to Python, since you say "I triple checked the syntax of all the file and there was no single syntax error, there is no additional imports mentioned in the tutorial."
Be aware that in Python, many name-related errors that would be caught at compile time in languages like C++ are caught at runtime instead. This tripped me up a little when I started using Python. Runtime errors could simply be indicating a mere typo, etc. (If this sounds nasty, don't worry-- there's free tools out there to check your program as a compiler for stuff like that some other languages would)
Is Category defined in the same file that that line appears in?
If not, you must specifically import the name Category. Suppose Category is defined in another file, argh.py.
import argh
is no good.
You would need to do
from argh import Category
(or alternatively change your code to reference argh.Category)
Anyway, your question can't really be answered better than that unless you give more information. That line isn't the problem. The problem is probably with the Category definition. Where is the definition of Category? Category is another model class. There should be code like
class Category:
#....
And it should either be in the same file, or if it's in a file called "prison.py" then the file you are working on should contain
from prison import Category
It would be useful to link on "some".
However, problem is that You have not imported Category or You define Category under the model with the key mentioned.
精彩评论