【问题标题】:Django: how to use "or" in django filter method?Django:如何在 Django 过滤方法中使用“或”?
【发布时间】:2022-06-24 17:24:29
【问题描述】:

我想通过元组过滤模型,我不知道这是否是正确的句子,但我有一个看起来像这样的模型:

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 时显示计数 这正是我所期待的。

【问题讨论】:

  • 你试过了吗:rating__in=["3.0", "4.0", "5.0"]
  • @jarmod 谢谢,它有效,请给出答案,以便我检查它

标签: python django django-models django-rest-framework django-views


【解决方案1】:

您可以使用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")

【讨论】:

  • 我从来不知道,tnx 很多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 2020-08-09
  • 2015-10-17
相关资源
最近更新 更多