本文介绍了如何从最近48小时获取数据-Django的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在建立一个新闻网站。我需要显示48小时内观看次数最多的新闻。
因此,我需要首先获取48小时新闻,然后获取其pv。
当前,我正在使用一种非常复杂的方法,该方法来自教程:
I'm building a news website.I need display 48 hours most viewed news.So I need first to get the 48 hours news, and then get its pv. Currently I'm using a very complicated method which is from a tutorial:
def get_two_days_read_data(content_type):
today = timezone.now().date()
dates = []
read_nums = []
for i in range(2, 0, -1):
date = today - datetime.timedelta(days=i)
dates.append(date.strftime('%m/%d'))
read_details = ReadDetail.objects.filter(content_type=content_type, date=date)
result = read_details.aggregate(read_num_sum=Sum('read_num'))
read_nums.append(result['read_num_sum'] or 0)
return dates, read_nums
我的问题是,有没有更简单的方法?
My question is, is there any easier way?
例如这样的东西:
def newsDetailView(request, news_pk):
news = get_object_or_404(News, id=news_pk)
News.objects.filter(id=news_pk).update(pv=F('pv') + 1)
48_hours_hot_news = news.objects.filter(**48_housrs**).order_by('-pv')
return render(request, "news_detail.html", {
'news': news,
'48_hours_hot_news' : 48_hours_hot_news
})
有谁可以帮忙?非常感谢!
Any friends can help?Thank you so much!
推荐答案
您可以使用过滤器
进行操作,从他的<$ c中减去48小时$ c>创建日期,如果其结果大于 48小时
或相等,则您会收到最新消息
You can do it with filter
, your substract 48 hours from his date created
, in case its result is greater than 48 hours
or equal, you got recent news
from datetime import datetime, timedelta
thetime = datetime.now() - timedelta(hours=48)
results = news.objects.filter(date_created__gte=thetime)
这篇关于如何从最近48小时获取数据-Django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!