2014-04-15 58 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