2015-01-20 73 views
1

我對Python和Django非常陌生。我試圖創建一個包含類別,帖子和標籤的基本博客引擎。Django - NameError:name'Post'沒有在多對多關係中定義

一個類別將有多個帖子

一個帖子將有多個標籤

所以我設計的模型是這樣的:

from django.db import models 

class Category(models.Model): 
    category_name = models.CharField(max_length=200) 
    posts = models.ManyToManyField(Post) 

    def __str__(self):    
     return self.category_name 

class Post(models.Model): 
    post_title = models.CharField(max_length=200) 
    post_body = models.TextField() 
    post_tags = models.ManyToManyField(Tag) 

    def __str__(self): 
     return self.post_title 

class Tag(models.Model): 
    tag_title = models.CharField(max_length=200) 

    def __str__(self): 
     return self.tag_title 

當我運行python manage.py migrate命令,我得到

File "/Development/Projects/pBlog/blogEngine/models.py", line 6, in Category 
    posts = models.ManyToManyField(Post) 
NameError: name 'Post' is not defined 

錯誤。有沒有語法錯誤?我有.Net背景,我可能需要改變我的整個方法。

回答

3

Post類時,你是指它在線6。在這種情況下還沒有定義,你應該使用模式,而不是名稱:

class Category(models.Model): 
    category_name = models.CharField(max_length=200) 
    posts = models.ManyToManyField("Post") 

    def __str__(self):    
     return self.category_name 

這是記錄在這裏:https://docs.djangoproject.com/en/1.7/ref/models/fields/#django.db.models.ForeignKey

+0

它的工作。謝謝!如有可能,我會將其標記爲答案。 – Sefa 2015-01-20 20:48:51