【问题标题】:django custom model manager throwing errordjango 自定义模型管理器抛出错误
【发布时间】:2014-04-15 10:01:35
【问题描述】:

我正在尝试为我正在开发的 django 网站构建模型,并且我拥有您在下面的评论模型中可以看到的所有字段。现在我已经阅读了如何实现自定义模型管理器,无论出于何种原因,代码行:“object = ReviewsManager”,django 都会抛出一个错误,指出它是一个未定义的变量。我见过的所有例子都做同样的事情,但它们显然工作得很好,知道发生了什么吗?需要明确的是,我已经导入了所有需要导入的东西,所以我知道这不是问题。 作为旁注,我应该提到我正在运行 django 1.6,以防万一。

//This is the model itself
class Reviews(models.Model):
    mentor_id = models.IntegerField(default=0, unique=False);
    review_id = models.IntegerField(default=0, unique=False);
    title = models.CharField(max_length=200);
    content = models.CharField(max_length=200);
    stars = models.DecimalField(max_digits=1, decimal_places=1);
    ----> object = ReviewsManager

//Trying to use this manager below
---> class ReviewsManager(models.Manager):    

    def getReviewsByMentorId(self, id):
       r = Reviews.objects.filter(mentor_id=id);
       return r;

【问题讨论】:

    标签: python django django-custom-manager


    【解决方案1】:

    有几个问题:

    • 您尝试在定义之前使用ReviewsManager 类。将您的类定义向上移动,使其位于您的 Review 类之上,或者将其移动到单独的文件并在使用该类之前导入该文件。

    • 您没有实例化您的经理类。在你解决了第一个问题之后,这将引发另一个错误。请改用objects = ReviewsManager()

    • 正如 Prashant 所说,应该是 objects,而不是 object

    【讨论】:

      【解决方案2】:

      请更改

      ----> 对象 = 评论管理器

      ----> objects = ReviewsManager() ## 你应该使用对象

      代码应该是这样的:

      类评论(模型。​​模型): 导师 ID = models.IntegerField(默认 = 0,唯一 = 假); review_id = models.IntegerField(default=0, unique=False); 标题 = models.CharField(max_length=200); 内容 = models.CharField(max_length=200); 星星 = models.DecimalField(max_digits=1, decimal_places=1); 对象 = 评论管理器() class ReviewsManager(models.Manager): def getReviewsByMentorId(self, id): r = Reviews.objects.filter(mentor_id=id); return r;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-20
        • 2023-04-07
        • 2018-03-14
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 2014-07-11
        相关资源
        最近更新 更多