Я пытаюсь получить все объекты из поля многие ко многим в моей модели курса и отфильтровать их на основе кода курса. В основном я пытаюсь вернуть все отзывы о курсах с таким же кодом курса. Но я получаю сообщение об ошибке:
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')