1

所以,我有帖子和类别:

class Post(models.Model):
    ...
    category = models.ForeignKey(Category)

    def __unicode__(self):
        return self.title

class Category(models.Model):
    category = models.CharField(max_length = 30, unique=True)
    id_post = models.ForeignKey(Post)   

    def __unicode__(self):
        return self.category

我写

python manage.py 验证

和 NameError: Name Categoryis not defined。为什么???

我正在使用 sqllite,谢谢!

4

1 回答 1

2

在 models.py 中将 Category 放在 Post 上方。Django / Python 从上到下验证模型。从 Django 开始时,我也偶然发现了它 :)

class Category(models.Model):
    category = models.CharField(max_length = 30, unique=True)   

    def __unicode__(self):
        return self.category

class Post(models.Model):
    ...
    category = models.ForeignKey(Category)

    def __unicode__(self):
        return self.title

当您在源代码中放置从 Post 到 Category 的关系时,您可能打算建立从 category 实例到所有相关 post 实例的关系。这是 Django 内置的,您可以使用“modelname_set”属性反转 ForeignKey 关系。

因此,要获取分配给特定类别的所有帖子,您可以执行以下操作:

myCategory =Category.objects.get(pk=1)
myCategory.post_set.all()
于 2012-09-23T15:54:55.597 回答