【问题标题】:How do I filter data using .date() keyword in the column name in django?如何在 django 的列名中使用 .date() 关键字过滤数据?
【发布时间】:2018-02-08 15:53:16
【问题描述】:

我正在使用 Django 编写一个 Web 应用程序,我必须在列名中使用 date()。原始字段是datetimefield,我只需要使用日期过滤并忽略时间。这是我的代码:

datas = Data.objects.all()
for data in datas:
    all = Data.objects.filter(datetime.date() = data.datetime.date())

但它给出了以下错误:

all = Data.objects.filter(datetime.date() = consumption.datetime.date()) 

SyntaxError: keyword can't be an expression

知道如何使用datetime.date() 作为列名来仅使用datetimefield 列的日期部分吗?

更新

这是我的模型:

class Data(models.Model):
    datetime = models.DateTimeField(auto_now=False)
    value = models.FloatField()

【问题讨论】:

  • 请展示您的模型,并添加 django 版本

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


【解决方案1】:

您可以使用__date 查找将datetime 字段转换为date

datas = Data.objects.filter(datetime__date=datetime.date())

参考:

https://docs.djangoproject.com/en/1.11/ref/models/querysets/#date

【讨论】:

  • 您的意思是 __date 将在列名中充当 .date() ?
  • @Elisha512 是的,__date 就是这样做的。
  • @Elisha512 因为你的 django 版本比 Django 1.9 更高。
猜你喜欢
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 2017-05-02
  • 2021-12-23
  • 2020-11-23
  • 2015-10-26
相关资源
最近更新 更多