You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何实现页面卡片按客户名称字母升序排列

要实现卡片按客户名称字母升序排列,直接调整Django的查询排序规则即可,推荐以下两种方案:

方案1:修改视图查询逻辑(按需排序,推荐)

在views.py的outgoinggallery函数中,对OutgoingLRU的查询结果使用order_by方法,通过双下划线跨关联表取分类名称(即客户名称)做升序排序,修改后的代码如下:

def outgoinggallery(request):
    user = request.user
    category = request.GET.get('category')
    if category == None:
        # 新增order_by按关联分类的名称升序排列
        alloutgoinglru = OutgoingLRU.objects.filter(category__user=user).order_by('category__name')
    else:
        # 新增order_by按关联分类的名称升序排列
        alloutgoinglru = OutgoingLRU.objects.filter(category__name=category, category__user=user).order_by('category__name')
    categories = Category.objects.filter(user=user)
    context = {'categories': categories, 'alloutgoinglru': alloutgoinglru}
    return render(request, 'Outgoing/outgoinggallery.html', context)

方案2:模型层设置全局默认排序

如果希望所有OutgoingLRU的查询默认都按客户名称升序排列,不需要每次查询单独加排序规则,可以直接在models.py的OutgoingLRU类的Meta属性中添加默认排序配置:

class OutgoingLRU(models.Model):
    class Meta:
        verbose_name = 'OutgoingLRU'
        verbose_name_plural = 'OutgoingLRUs'
        # 新增默认排序规则,按分类名称升序
        ordering = ['category__name']

    # 其余原有字段代码保持不变

补充说明

如果你的业务中存在category为空的记录,希望空值统一排在最后,可以将排序逻辑调整为:

from django.db.models import F
alloutgoinglru = OutgoingLRU.objects.filter(category__user=user).order_by(F('category__name').asc(nulls_last=True))

内容的提问来源于stack exchange,提问作者Rainysky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:54:03