朋友们,我正在开发一个网站,根据他们关注的用户向他/她定制的新闻Feed显示注册用户。我想要的是他们应该根据这些项目看到三个模型问题,答案和文档中的项目。 timestamps.All我的模型都有一个时间戳字段。我该如何实施呢?
这是我的views.py
def index(request):
questions = Question.objects.all()
answers = Answer.objects.all()
docs = Document.objects.all()
return render(request,"welcome/index.html",locals())
我在这里保持了我的观点简单。我只是想知道如何一次操作所有三个模型。
答案 0 :(得分:1)
假设您在所有模型中都有一个名为created_at
的字段。
第1步:合并所有3个列表。
merged_list = []
merged_list.extend(questions)
merged_list.extend(answers)
merged_list.extend(docs)
第2步:按公共字段排序。
merged_list.sort(key=lambda item: item.created_at)
(或)您可以在没有lambda
from operator import attrgetter
sorted_list = sorted(merged_list, key=attrgetter('created_at'))
答案 1 :(得分:1)
您可以chain
对象,并使用模型的常见timestamp
字段进行排序:
from itertools import chain
def index(request):
items = sorted(chain(Question.objects.all(),
Answer.objects.all(),
Document.objects.all()), key=lambda obj: obj.timestamp)
return render(request, "welcome/index.html", {'items': items})