2014-04-15 57 views
1

我正在尝试为我正在处理的django网站构建模型,并且我具有所有字段,如下面的评论模型中所示。现在我已经阅读了如何实现自定义模型管理器,并且无论出于何种原因,代码行:“object = ReviewsManager”,django都会抛出一个错误,指出它是一个未定义的变量。我见过的所有例子都完全一样,但他们显然工作得很好,任何想法发生了什么?要清楚我已经导入了所有需要导入的东西,所以我知道这不是问题。 作为一个方面说明,我应该提到我正在运行django 1.6,以防万一。django自定义模型管理器投掷错误

//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; 

回答

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;
3

有几个问题:

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

  • 你没有实例化你的经理类。解决第一个问题后,这会引发另一个错误。改为使用objects = ReviewsManager()

  • 正如PRASHANT说,它应该是objects,不object