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