gpt4 book ai didi

python - Django 。对链中的对象进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:32 25 4
gpt4 key购买 nike

我设置了sorting related到对象管理器。我有views.py

def Objects(request):
Objects_1 = car_type_1.objects.filter(manager_id='1', is_published=True)
Objects_2 = car_type_2.objects.filter(manager_id='1', is_published=True)
Objects_3 = car_type_3.objects.filter(manager_id='1', is_published=True)
queryset_list = list(chain(Objects_1, Objects_2, Objects_3))
paginator = Paginator(queryset_list, 6)
page = request.GET.get('page')
paged_listings = paginator.get_page(page)
context = {'listings': paged_listings}
return render(request, 'template.html', context)

结果,我得到了一个包含对象的页面。负责manager id 1对于所有对象。

页面上的所有内容均已正确排序。显示manager id 1对象。但是,它们被一一展示。首先来自群car_type_1 ,然后群car_type_2car_type_3 .

问题。如何制裁剪体sorted by price来自所有组?

谢谢!

最佳答案

您可以使用 sorted(..) 对列表中的项目进行排序:

from operator import <b>attrgetter</b>

def objects(request):
objs1 = car_type_1.objects.filter(manager_id='1', is_published=True)
objs2 = car_type_2.objects.filter(manager_id='1', is_published=True)
objs3 = car_type_3.objects.filter(manager_id='1', is_published=True)
items = <b>sorted(</b>chain(objs1, objs2, objs3)<b>, key=attrgetter('price'))</b>
paginator = Paginator(items, 6)
page = request.GET.get('page')
paged_listings = paginator.get_page(page)
context = {'listings': paged_listings}
return render(request, 'template.html', context)

但是,如果您需要对大量数据进行排序,则上述方法效率不高,因为这将导致将所有对象提取到内存中并对其进行排序。而数据库通常经过优化以对有限的结果集进行排序。

最好重新考虑您的设计,并将这三个 car_type_<i>i</i> 合并起来。合并为单一模型。

关于python - Django 。对链中的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57475421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com