对象没有属性_set',Django

时间:2015-12-24 05:11:43

标签: python django django-models models

我有这些模特:

class BlogCategory(models.Model):
    name = models.CharField(max_length=20)

    def __str__(self):
        return self.name

    def get_number_of_categorys_items(self):
        return self.post_set.count()


class Post(models.Model):
    title = models.CharField(max_length=130)
    content = models.TextField()
    category = models.ForeignKey(BlogCategory, related_name='blog_category')

    def __str__(self):
        return self.title

当我尝试调用方法get_number_of_categorys_items时,它会导致错误:

  

AttributeError:'BlogCategory'对象没有属性'post_set'

此方法应返回此类别的帖子数。

我该怎么办?

1 个答案:

答案 0 :(得分:9)

由于您已指定related_name,因此Django不会自动为post_set创建相关名称。使用:

def get_number_of_categorys_items(self):
    return self.blog_category.count()

或者,不要指定related_name

category = models.ForeignKey(BlogCategory)