【问题标题】:Django 1.4 SimpleListfilter sorts wrongDjango 1.4 SimpleListfilter 排序错误
【发布时间】:2015-02-25 19:12:32
【问题描述】:

我刚刚为我的 Django 应用程序实现了一个简单的列表过滤器,以仅捕获像这样的活动条目:

class ActiveAircraftsFilter(SimpleListFilter):
    title = _('aircraft')
    parameter_name = 'aircraft__ac_registration'

    def lookups(self, request, model_admin):
        qs = Aircraft.objects.filter(active=True)

        act = set([ac.ac_registration for ac in qs])
        return [(ac, ac) for ac in act]

    def queryset(self, request, queryset):
        return queryset

这按预期工作,但排序错误。

在我的开发环境中,我有三架飞机,其中两架处于活动状态。 但是在 DjangoAdmin 中,Dropdown 以错误的顺序包含它们。 我得到: D-BBBB D-AAAA

而不是预期:D-AAAA 和 D-BBBB 排在第二位。

有趣的是,它们也不按 ID 排序...

我的基础模型飞机在 Meta 类集中排序。 此外,我还尝试在获取查询集时设置排序

qs = Aircraft.objects.filter(active=True).order_by('ac_registration')

但这也无济于事。

上面的代码有什么问题?

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    在 Python 中,sets 是 unordered。你可以试试

    return [(ac, ac) for ac in sorted(act)]
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2023-04-02
      • 2011-10-28
      • 2012-04-20
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      相关资源
      最近更新 更多