【发布时间】:2018-10-29 07:13:48
【问题描述】:
我正在建立一个新闻网站。我需要显示 48 小时观看次数最多的新闻。 所以我需要先得到48小时新闻,然后得到它的pv。 目前我正在使用一个非常复杂的方法,它来自一个教程:
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
})
有朋友可以帮忙吗?非常感谢!
【问题讨论】:
标签: python django python-3.x django-models django-views