Django: как использовать "or" в методе фильтра django?
Я хочу фильтровать модель по кортежу, не знаю, правильное ли это предложение, но у меня есть модель, которая выглядит следующим образом
USER_COURSE_RATING = (
("1.0", "1.0 - Poor"),
("2.0", "2.0 - Fair"),
("3.0", "3.0 - Good"),
("4.0", "4.0 - Amazing"),
("5.0", "5.0 - Excellent"),
)
class Course(models.Model):
course_title = models.CharField(max_length=10000)
class CourseRating(models.Model):
course = models.ForeignKey(Course, on_delete=models.CASCADE)
rating = models.CharField(max_length=1000, choices=USER_COURSE_RATING, null=True, blank=True)
и что я хочу сделать в представлениях, если отфильтровать CourseRating по кортежу, который я определил выше под названием USER_COURSE_RATING
Я написал представление, но оно, похоже, не работает, ПРИМЕЧАНИЕ: я не получаю никаких сообщений об ошибках, но оно не работает
def course_detail(request, course_slug):
rating_count = CourseRating.objects.filter(course=course, rating="3.0" or "4.0" or "5.0").count()
Так что я хочу отображать счетчик только в том случае, если рейтинг был 3.0, 4.0 или 5.0 - вот что я ожидаю
.
Вы можете проверить, имеет ли определенный столбец одно из нескольких значений, используя in.
Например:
tbl.objects.filter(course=course, rating__in=["3.0","4.0","5.0"])
Это аналогично эквивалентной функции проверки членства в Python:
rating = "3.0"
if rating in ["3.0", "4.0", "5.0"]:
print("Yes")