Django 1.4 SimpleListfilter排序错误

时间:2015-02-25 19:12:32

标签: python django django-admin

我刚刚为我的Django App实现了一个简单的listfilter,只能跟上这样的活动条目:

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')

但这也无济于事。

上面的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

在Python中,setunordered。你可以尝试

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