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

标签 python django

我设置了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/

相关文章:

python - 403 Forbidden due to Client Denied by Server Configuration

python - 决策树重复类名

python - 使用 Tornado httpclient 对 Github API 的简单未授权请求返回 Forbidden

Python 类变量初始化访问 init 之外的变量

django - 在 Django 中使用自定义字段扩展用户模型

python - FeinCMS 只允许每个页面对象使用一次内容类型

djangocms : move data from deprecated cmsplugin-filer-*-plugins to djangocms-*-plugins

python - 如何读取 jinja 上下文变量

python - tf.nn.static_rnn - 输入必须是序列

javascript - 查找浏览器生成的 JavaScript 变量的当前值