【问题标题】:AttributeError: 'Manager' object has no attributeAttributeError:“经理”对象没有属性
【发布时间】:2019-06-14 07:30:31
【问题描述】:

我正在使用 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'

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

【问题讨论】:

  • 您是否将 ArticleStat 对象属性设置为指向 ArticleStatManager?

标签: python django python-3.x model


【解决方案1】:

正如@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)

【讨论】:

    【解决方案2】:

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

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

    (DOCS)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 2012-12-01
      • 2021-04-19
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      相关资源
      最近更新 更多