Python 无法根据创建日期筛选我的Django模型依赖项
我正在试着做一张图表。我的数据库已创建\u日期。我每天收到大约150次产品数据,我希望看到我的数据每天增加和减少。我的前端和Django模板没有问题(我尝试手动数据,效果很好),我只想看看最后7天的图表 当我使用Python 无法根据创建日期筛选我的Django模型依赖项,python,django,datetime,Python,Django,Datetime,我正在试着做一张图表。我的数据库已创建\u日期。我每天收到大约150次产品数据,我希望看到我的数据每天增加和减少。我的前端和Django模板没有问题(我尝试手动数据,效果很好),我只想看看最后7天的图表 当我使用Products.objects.filter(created\u dates=days)filter方法时,我得到的是空的Queryset 我已经尝试了created\u dates\uu gte=startdate,created\u lte=enddate它返回空查询集 我还尝试了
Products.objects.filter(created\u dates=days)
filter方法时,我得到的是空的Queryset
我已经尝试了created\u dates\uu gte=startdate,created\u lte=enddate
它返回空查询集
我还尝试了created\u dates\u range
,但也没有答案
我只是从created\u dates\u gte=days
中获取数据,但我不想要这些数据
view.py
在我的数据库中,我有数千个数据,每天大约150个数据。我的创建日期列格式如下
创建日期列:
2020-10-19 09:39:19.894184
那么我的代码怎么了?。您能帮忙吗?您正在尝试比较DateTimeField类型(创建的日期)和Date类型(week_days是天数列表),所以您可能应该尝试查找日期
product_num = Products.objects.filter(created_dates__date=days)
此外,您应该考虑使用组来开始使用COUNT()数据库函数,而不是在几天内迭代。
这里有一个很好的解释:您应该能够通过一个聚合查询来实现这一点:
import datetime
from django.db.models import Count
def data_chart(request):
cutoff = datetime.date.today() - datetime.timedelta(days=7)
raw_data = (
Products.objects.filter(created_dates__gte=cutoff)
.values_list("created_dates__date")
.annotate(count=Count("id"))
.values_list("created_dates__date", "count")
)
data = [{"day": str(date), "value": value} for (date, value) in raw_data]
return render(request, "chartpage.html", {"data": data})
也展示你的模型。
created_dates
datetime字段吗?我这样的模型created_dates=models.datetime字段(auto_now_add=True,verbose_name=(“Oluşturma Tarihi”)、null=True)再次像这样返回,所以没有解决方案yetI会尝试让您知道一天的结束,我不知道它是如何工作的,但效果很好。图表准备得很好。但是你写的日期和计数都错了。它应该是“day”:str(day),“value”:value,因为它作为datetime类返回,所以我使用str(day)。非常感谢。@MuratDemir啊,是的。修正了输入错误:)
import datetime
from django.db.models import Count
def data_chart(request):
cutoff = datetime.date.today() - datetime.timedelta(days=7)
raw_data = (
Products.objects.filter(created_dates__gte=cutoff)
.values_list("created_dates__date")
.annotate(count=Count("id"))
.values_list("created_dates__date", "count")
)
data = [{"day": str(date), "value": value} for (date, value) in raw_data]
return render(request, "chartpage.html", {"data": data})