我试图从我的课程模型中的多对多字段中获取所有对象,并根据课程代码过滤它们。基本上,我试图返回具有相同课程代码的课程的所有评论。但我收到错误:
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')
在您的模型中添加一个方法,
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] 删除。
我来说两句