TypeError: 'Review' 对象不可迭代 Django 对象不可迭代

灰烬999

我试图从我的课程模型中的多对多字段中获取所有对象,并根据课程代码过滤它们。基本上,我试图返回具有相同课程代码的课程的所有评论。但我收到错误:

TypeError: 'Review' object is not iterable

它什么都不返回。

当我打印出来时,我得到:<QuerySet [<Course_course_reviews: Course_course_reviews object (1)>]>这是一个查询集,但我不知道为什么它在我的课程模型中没有返回任何内容我有方法:

def get_reviews(self):
        return Course.course_reviews.through.objects.filter(course__course_code=self.course_code,course__course_university=self.course_university,course__course_instructor=self.course_instructor)

与评论模型的多对多链接是:

course_reviews = models.ManyToManyField(Review, blank=True, related_name='course_reviews')

为什么它不在我的模板中返回任何内容?我对这里的问题感到困惑。

我还想补充一点,当我打印从我的视图发送到我的模板的评论时,我得到: <QuerySet [<Course_course_reviews: Course_course_reviews object (1)>]>

楷模:

class Review(models.Model):
    author = models.ForeignKey(Profile, on_delete=models.CASCADE)
    body = models.TextField(validators=[MaxLengthValidator(400)])
    created_on = models.DateTimeField(auto_now_add=True)
    likes= models.ManyToManyField(Profile, blank=True, related_name='review_likes')

class Course(models.Model):
    course_code = models.CharField(max_length=20)
    course_university = models.CharField(max_length=100)
    course_instructor = models.CharField(max_length=100)
    course_reviews = models.ManyToManyField(Review, blank=True, related_name='course_reviews')
JPG

在您的模型中添加一个方法,

class Course(models.Model):
    course_code = models.CharField(max_length=20)
    course_university = models.CharField(max_length=100)
    course_instructor = models.CharField(max_length=100)
    course_reviews = models.ManyToManyField(Review, blank=True, related_name='course_reviews')

    def get_reviews(self):
        return Review.objects.filter(course_reviews__course_code=self.course_code).distinct()

用法

course_instance = Course.objects.get(id=12345)
评论 = course_instance .get_reviews()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章