【问题标题】:What is the django equivalent of this SQL query?这个 SQL 查询的 django 等价物是什么?
【发布时间】:2013-04-14 17:51:14
【问题描述】:

我对 django 很陌生,我正在尝试完成一些重复性任务。我想知道以下任务的 django 等价物是什么。

  1. 我想选择特定日期范围内的所有值。

例如:假设有一个名为考试成绩的表格

 User Physics  Chemistry Mathematics Total  Date
 bill    98       94          Pass    284   02/03/2013
 murray  0        89          Fail     89   02/03/2013
 bill    10       20          Pass     90   01/29/2013

现在假设我想编写一个 django 命令,用于获取用户 bill 的所有数学科目的对象。

在这里我会写一些类似的东西

scores = Score.objects.filter(user = "bill", Mathematics = "pass")

上面代码的问题是当我做类似的事情时

 for s in scores:
     print "Physics score =", s.Physics

控制永远不会出现在打印语句中。

【问题讨论】:

    标签: python mysql django django-models django-queryset


    【解决方案1】:

    所以我认为你要求这样的东西

    math_scores = Score.objects.filter(user='bill', date__range=(timezone.now() - datetime.timedelta(days=7), timezone.now()).values_list('mathematics', flat=True)
    

    这将为您提供过去一周内比尔的所有数学成绩,例如

    [92, 60]
    

    这是你想要做的还是我误解了这个问题?

    【讨论】:

    • 这有点对,但我希望获得所有具有数学价值的对象。假设我应该能够通过访问满足条件的对象来查看比尔的物理分数。你的查询也给了我一个语法错误
    • 我稍微改变了我的问题。你能看一下并帮我解决可能出现的问题吗?
    • @appyg “控制永远不会出现在打印语句中”是什么意思。因为我认为您在问题中的逻辑没有任何问题。
    • 当我运行程序时,即使有符合条件的条目,分数变量也是空的,而不是具有符合特定条件的对象列表
    • @appyg 你能添加你正在使用的实际视图和实际分数模型吗?
    【解决方案2】:

    鉴于您在上面显示的数据和查询,没有匹配“bill”和“pass”的元素。有匹配'bill'和'Pass'的元素,这是不同的东西。

    不过,我不明白你关于日期范围的观点的相关性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 2012-01-02
      • 2013-08-11
      • 2011-03-19
      • 2012-09-28
      • 2021-08-04
      • 1970-01-01
      相关资源
      最近更新 更多