1

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

2 回答 2

3

有几个问题:

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

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

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

于 2014-04-15T10:07:04.283 回答
1

请更换

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

----> 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;
于 2014-04-15T10:04:38.783 回答