Django 1.4 SimpleListfilter排序错误

2024-04-24 10:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚为我的Django应用程序实现了一个简单的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中,下拉列表中包含的顺序不正确。 我得到: D-BBBB型 D-AAAA级

而不是预期的:D-AAAA和D-BBBB为第二。你知道吗

有趣的是,它们也不是按ID排序的。。。你知道吗

我的底层模型飞机在元类集合中有订购。 此外,我还尝试在获取queryset时设置顺序

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

但这也于事无补。你知道吗

上面的代码怎么了?你知道吗


Tags: selftrueforobjectsrequestdefregistrationfilter