首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django admin -排序list_filter

Django admin -排序list_filter
EN

Stack Overflow用户
提问于 2013-05-15 16:19:43
回答 1查看 10.5K关注 0票数 23

我在list_filter中有' version‘,我希望最新版本在'All’列表项之后。在这种情况下,如何对列表进行降序排序?(全部,3.6.99.108,3.6.99.107...)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-15 16:36:07

在模型Meta类中定义默认排序:

class MyModel(models.Model):
    # some model fields here
    class Meta:
        ordering = ['-version',]

如果它不能满足您的需求,您可以编写您自己的自定义列表过滤器:

from django.utils.translation import ugettext_lazy as _
from django.contrib.admin import SimpleListFilter

class VersionFilter(SimpleListFilter):
    title = _('version')

    parameter_name = 'version'

    def lookups(self, request, model_admin):
        qs = model_admin.queryset(request)
        return [(i, i) for i in qs.values_list('version', flat=True) \
                                  .distinct().order_by('-version')]

    def queryset(self, request, queryset):
        if self.value():
            return queryset.filter(version__exact=self.value())

class MyModel(ModelAdmin):
    list_filter = (VersionFilter,)

如果您得到下面的错误AttributeError: object has no attribute 'queryset',那么您可能正在使用Django 1.5+,而不是使用.get_queryset()

qs = model_admin.get_queryset(request)
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16560055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档