Django:如何在 Django 过滤方法中使用 "or"?

Django: how to use "or" in django filter method?

我想按元组过滤模型,我不知道这句话是否适合使用,但我有一个看起来像这样的模型

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)

以及我想在视图中执行的操作,如果通过我在上面定义的名为 USER_COURSE_RATING

的元组过滤 CourseRating

我已经编写了视图,但它似乎不起作用,注意:我没有收到任何错误消息,但它不起作用

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")