我正在建立一个新闻网站。我需要显示48小时最常见的新闻。 所以我首先需要获得48小时的新闻,然后获得它的光盘。 目前,我正在使用一个非常复杂的方法,该方法来自教程:
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
我的问题是,有没有更简单的方法?
例如:
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
})
任何朋友都可以帮忙吗?非常感谢你!
答案 0 :(得分:2)
你可以使用filter
,距离他的date created
48小时你的减法,如果结果大于48 hours
或相等,你会得到最新消息
from datetime import datetime, timedelta
thetime = datetime.now() - timedelta(hours=48)
results = news.objects.filter(date_created__gte=thetime)
请注意,变量名称无法以
digit
开头: 48_hours_hot_news :错误