【问题标题】:Object has no attribute _set', Django对象没有属性_set',Django
【发布时间】:2016-03-30 14:09:24
【问题描述】:

我有这些模型:

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'

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

我能做什么?

【问题讨论】:

    标签: python django django-models models


    【解决方案1】:

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

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

    或者,不要指定related_name

    category = models.ForeignKey(BlogCategory)
    

    【讨论】:

    • 谢谢,很有用!
    • @Alecxe,谢谢,非常有帮助!我在一个相关问题上花了很多时间,唯一的问题是在 ForeignKey 字段中添加了一个 related_name。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2015-02-19
    • 2021-04-05
    相关资源
    最近更新 更多