我正在尝试通过列表视图显示几个模型。经过一些研究...我已经确定我可以做一些类似...
class MultiModelListView(LoginRequiredMixin,ListView):
model = MultiModel
context_object_name = 'thing_list'
template_name = 'view_my_list.html'
paginate_by = 15
def get_context_data(self, **kwargs):
context = super(MultiModelListView, self).get_context_data(**kwargs)
list1 = Model1.objects.filter(created_by=self.request.user)
list2 = Model2.objects.filter(created_by=self.request.user)
list3 = Model3.objects.filter(created_by=self.request.user)
context['list1'] = list1
context['list2'] = list2
context['list3'] = list3
return context
然后在我的模板中....遍历每个列表....
{% for thing in list1 %}
Show thing
{% endfor %}
{% for thing in list2 %}
Show thing
{% endfor %}
{% for thing in list3 %}
Show thing
{% endfor %}
这是可行的......除了我真的想混合事件并按所有模型都具有的创建日期对它们排序......我真的想对所有事件进行排序......而不是按列表本身......是否有一种直接的方法可以做到这一点......或者我是否需要创建一个定义了所有这些模型的“主”模型才能实现我的目标?
1条答案
按热度按时间vuktfyat1#
如果将
QuerySet
对象更改为列表,则可以将其连接起来。然后使用lambda
对其进行排序。假设要按created_at
属性进行排序:如果需要更改方向,您可以始终在
sorted
函数中使用reverse=True
。