Object does not have _set 'attribute, Django

I have these 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

And when I try to call a method get_number_of_categorys_items, it throws an error:

AttributeError: BlogCategory object does not have post_set attribute

This method should return the number of posts in this category.

What can I do?

+4
source share
1 answer

As you indicated related_name, Django will not automatically create the associated name as post_setfor you. Or use:

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

Or, do not specify related_name:

category = models.ForeignKey(BlogCategory)
+6
source

Source: https://habr.com/ru/post/1621572/


All Articles