首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Django admin中为外键过滤器排序list_filter标签?

在Django admin中,可以通过自定义过滤器来为外键字段的list_filter标签进行排序。以下是实现该功能的步骤:

  1. 创建一个自定义过滤器类,继承自admin.SimpleListFilter类。例如,我们创建一个名为CustomFilter的过滤器类。
代码语言:python
复制
from django.contrib import admin
from django.utils.translation import gettext_lazy as _

class CustomFilter(admin.SimpleListFilter):
    title = _('Custom Filter')  # 过滤器的标题
    parameter_name = 'custom_filter'  # 过滤器的参数名

    def lookups(self, request, model_admin):
        # 返回过滤器的选项,格式为(过滤器值,过滤器显示名称)
        return (
            ('option1', _('Option 1')),
            ('option2', _('Option 2')),
        )

    def queryset(self, request, queryset):
        # 根据过滤器的值对查询集进行过滤
        if self.value() == 'option1':
            return queryset.filter(foreign_key_field__isnull=True)
        if self.value() == 'option2':
            return queryset.filter(foreign_key_field__isnull=False)
  1. 在admin.py文件中注册模型,并将自定义过滤器类添加到list_filter标签中。
代码语言:python
复制
from django.contrib import admin
from .models import YourModel

class YourModelAdmin(admin.ModelAdmin):
    list_filter = (CustomFilter,)

admin.site.register(YourModel, YourModelAdmin)

现在,在Django admin中,你将看到一个名为"Custom Filter"的过滤器,其中包含"Option 1"和"Option 2"两个选项。选择不同的选项将根据外键字段的值对列表进行过滤。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议您参考腾讯云官方文档或咨询腾讯云的技术支持团队,以获取与Django admin相关的产品和服务信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django3.2边学边记—Adimn站点管理

(Test)class TestAdmin(admin.ModelAdmin):    pass 页大小 每页显示多少条数据,默认为每页显示100条数据,设置20 12 class TestAdmin...def atitle(self):        return self.title 按以上方法显示的列是不能排序的,如果让这个方法显示的列也能排序,就给atitle方法的.admin_order_field..."""    empty_value:属性值空时 处理    description:显示名    ordering:排序依据    boolean:返回值bool型    其中:    empty_value...过滤器 用 list_filter 来激活管理更改列表页面右侧侧栏的过滤器,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括字段(注意list_display...是不能直接接收字段的),会将对应字段的值列出来,一般用于快速过滤有重复值的字段。

1.3K30

django后台管理-admin

0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册的appadmin文件中导入模型然后注册模型 admin.site.register(导入的模型类...') #list_per_page设置每页显示多少条记录,默认是100条 list_per_page = 50 #ordering设置默认排序字段,负号表示降序排序...list_editable 设置默认可编辑字段 list_editable = ['machine_room_id', 'temperature'] #fk_fields 设置显示字段...一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索框;日期时间用分层筛选。 过滤器如果是需要遵循这样的语法:本表字段__表要显示的字段。...:“user__user_name” 3、颜色显示 from django.db import models from django.contrib import admin from django.utils.html

84710

Django 1.10文文档-第一个应用Part7-自定义管理站点

在这个表单,Question字段是一个select选择框,包含了当前数据库中所有的Question实例。Djangoadmin站点中,自动地将所有的关系展示一个select框。...在我们的例子,目前只有一个question对象存在。 请注意图中的绿色加号,它连接到Question模型。每一个包含关系的对象都会有这个绿色加号。...填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice的关联对象。通俗讲就是,新建一个Question并作为当前Choice的。...在QuestionAdmin添加下面的代码: list_filter = ['pub_date'] 它添加了一个“过滤器”侧边栏,这样就可以通过pubdate字段来过滤显示question: ?...回答是,由于APP_DIRS被设置`True``,Django将自动查找每一个应用路径下的templates/子目录(不要忘了django.contrib.admin也是一个应用)。

3.6K60

python测试开发django-23.admin列表页优化和排序

前言 列表页优化和排序 ModelAdmin django的options.py里面 ModelAdmin类定义的参数可以设置admin后台列表页面,相关的参数如下 class ModelAdmin(BaseModelAdmin...设置默认可编辑字段 有些字段如果想在列表页就能直接编辑,可以加个list_editable参数,这样无需进子页面,可以直接编辑列表页上的字段 如果有多个参数设置,元组里面逗号隔开就行, list_editable...过滤器 如果想快速方便找到作者对应的文字,可以添加过滤器,显示到列表页面右边,设置list_filter = (‘auth’, ‘title’) class ControlArticle(admin.ModelAdmin...list_filter = ('auth', 'title') # 注册Article表 admin.site.register(models.Article, ControlArticle...list_filter = ('auth', 'title') # 时间分层 date_hierarchy = 'create_time' # 注册Article表 admin.site.register

81730

Django3.2边学边记—Adimn站点管理

(Test)class TestAdmin(admin.ModelAdmin):    pass 页大小 每页显示多少条数据,默认为每页显示100条数据,设置20 12 class TestAdmin...def atitle(self):        return self.title 按以上方法显示的列是不能排序的,如果让这个方法显示的列也能排序,就给atitle方法的.admin_order_field...属性,指定排序依据的模型属性,如下: 12345 # from django.db import models# from django.contrib import adminclass...:属性值空时 处理    description:显示名    ordering:排序依据    boolean:返回值bool型    其中:    empty_value 和 boolean 只能设置一个... title2(self):        return self.title 过滤器 用 list_filter 来激活管理更改列表页面右侧侧栏的过滤器,如下截图所示: list_filter

1.1K00

Django Admin 后台自定制技巧

Django最强大的部分之一是自动管理界面。它从模型读取元数据,以提供一个快速的,以模型中心的界面,受信任的用户可以在其中管理您网站上的内容。管理员的建议用法仅限于组织的内部管理工具。...= 设置一个过滤器,此处是以hostname作为过滤条件 list_filter = ("hostname",) # ordering = 设置一个排序条件,此处是以id作为排序依据...',self.id) 增加自定义actions: 自定义Action标签,Action标签就是Admin页面左上角的横线部分,我们自己增加新的. # name: admin.py from...ordering = ("id",) # list_per_page = 设置每页显示数据条数 list_per_page = 10 # list_filter = 设置一个过滤器...,Action标签就是Admin页面左上角的横线部分,我们自己增加新的. # name: admin.py from django.contrib import admin from MyWeb.models

1.2K20

Django 上传图片和Admin站点5.2

上传图片 当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES的每个的name 注意:FILES只有在请求的方法...True actions_on_bottom = True list_display 出现列表显示的字段 列表类型 在列表,可以是字段名称,也可以是方法名称,但是方法名称默认不能排序 在方法可以使用...文件 class HeroAdmin(admin.ModelAdmin): list_display = ['hname', 'hContent'] 让方法排序方法指定admin_order_field...页中注册 class HeroAdmin(admin.ModelAdmin): list_display = ['hName', 'hContent'] list_filter 右侧栏过滤器,对哪些属性的值进行过滤...list_filter = ['hname', 'hcontent'] list_per_page 每页显示多少项,默认设置100 class HeroAdmin(admin.ModelAdmin)

45730

Django开发在线教育平台--学习整理(一)

课程列表页可以对不同字段进行排序。选择多条记录进行删除操作。 课程列表页:过滤器->选择字段范围等,搜索,导出csv,xml,json。 课程新增页面上传图片,富文本的编辑。...用于table某个字段时,在admin后台会显示verbose_name,用于Meta时,显示的是当前数据表的名称。...2、max_length最大字符长度,由于CharField在数据库对应为varchar,最大长度255, 所以这里设置的最大值也不能超过255,否则,用TextField代替。...使用upload_to='uploads/%Y/%m/%d/',文件会上传到MEDIA_ROOT/uploads/2015/01/30, /%Y/%m/%d/strftime()格式化的xxxx年...list_display = ('course', 'name', 'add_time') search_fields = ('course', 'name') # 由于course是一个

2.9K90

学习猿地 python教程 django教程11 Django管理站点

# Django管理站点 > 自动管理界面是Django最强大的部分之一。 > > 它从您的模型读取元数据,以提供一个快速,以模型中心的界面,让受信任的用户可以管理您网站上的内容。...``` ### 2,进入应用admin.py文件,添加模型类 ``` from django.contrib import admin from . models import Stu # Register...','age','sex','email','pic')   #list_per_page设置每页显示多少条记录,默认是100条   list_per_page = 2   #ordering设置默认排序字段...,负号表示降序排序   ordering = ('id',)   #list_editable 设置默认可编辑字段   list_editable = ['username', 'age']   #过滤器...  list_filter =('username', 'age', 'email')   #搜索字段   search_fields =('username', 'age', 'email')

39320

学习猿地 python教程 django教程11 Django管理站点

# Django管理站点 > 自动管理界面是Django最强大的部分之一。 > > 它从您的模型读取元数据,以提供一个快速,以模型中心的界面,让受信任的用户可以管理您网站上的内容。...``` ### 2,进入应用admin.py文件,添加模型类 ``` from django.contrib import admin from . models import Stu # Register...','age','sex','email','pic') #list_per_page设置每页显示多少条记录,默认是100条 list_per_page = 2 #ordering设置默认排序字段...,负号表示降序排序 ordering = ('id',) #list_editable 设置默认可编辑字段 list_editable = ['username', 'age'] #过滤器...list_filter =('username', 'age', 'email') #搜索字段 search_fields =('username', 'age', 'email')

25010

Django Admin后台管理

的list_display添加get_name方法 list_display = ['id', 'name', 'addr', 'get_name'] 显示效果如下 注:属性列在后台管理页面是可以进行排序的...,而方法列是不能排序的,如果需要排序需要设置admin_order_field属性来方法指定排序依据。...但在模型类字段方法设置第一个参数verbose_name可以实现自定义标题,ame = models.CharField(verbose_name='学校名', max_length=20)。...list_filter = ['name'] # 搜索框 search_fields = ['name'] 效果如下。...5.其他 富文本编辑器 后台管理员如果需要在后台编辑带样式的文字,编辑对商品的详细信息描述,就需要使用富文本编辑器。这里以tinymce例在Django Admin后台中如何使用富文本编辑器。

2.7K10
领券