django自定义模型管理器抛出错误

时间:2014-04-15 10:01:36

标签: python django django-custom-manager

我正在尝试为我正在开发的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;

2 个答案:

答案 0 :(得分:3)

有几个问题:

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

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

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

答案 1 :(得分:1)

请更改

----> object = ReviewsManager

----> objects = ReviewsManager()        ## you should use objects

代码应该像:

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);
    objects = ReviewsManager()

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