AttributeError:'Manager'对象没有属性

时间:2019-01-20 21:08:04

标签: python django python-3.x model

我正在使用Python 3.7。我在弄清楚应该如何以及在何处放置创建并保存多个对象的方法时遇到了很多麻烦。我在我的models.py文件中有这个

class ArticleStatManager(models.Manager):
    def save_main_article(self, article):

然后在代码的另一部分,我打电话

ArticleStat.objects.save_main_article(article)

但这会导致错误

    ArticleStat.objects.save_main_article(article)
AttributeError: 'Manager' object has no attribute 'save_main_article'

我做错了什么,或者应该在哪里放置此代码,以便可以正确调用它?

2 个答案:

答案 0 :(得分:0)

您需要告诉模型使用自定义模型管理器。

class ArticleStat(models.Model):
    objects = ArticleStatManager()

(DOCS)

答案 1 :(得分:0)

正如@DanielRosman在其评论中指出的那样,您必须将ArticleStatManager设置为default manager(您希望通过属性objects来设置它,因此它必须是默认管理器)

class ArticleStat(models.Model):
    objects = ArticleStatManager()

您也可以为此目的设置其他经理:

class ArticleStat(models.Model):
    objects = Manager()
    articlesmanager = ArticleStatManager()

然后您可以:

ArticleStat.articlesmanager.save_main_article(article)