Django-admin-过滤器(搜索框、下拉框)

本文介绍了如何在Django的admin模块中使用过滤器,包括直接激活过滤器、激活带选项的属性以及自定义查询的过滤器。通过list_filter激活已有模型字段的过滤器,并展示了如何创建自定义的SimpleListFilter和SingleTextInputFilter,以实现更灵活的查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django框架的admin模块,通过list_filter提供给用户自定义分类查询的接口,并且我们可以在原有类的基础上扩展出符合自身应用场景的过滤器。

  1. 定义模型

以 Student 模型为准,管理类为 StudentAdmin

class Student(models.Model):
    id = models.AutoField(primary_key=True)
    first_name = models.CharField(
            max_length=20, verbose_name=u'姓')
    last_name = models.CharField(
            max_length=20, verbose_naem=u'名')
    gender = models.IntegerField(
            choices=choices_gender, verbose_name=u'性别')
    age = models.IntegerField(
            blank=True, verbose_name=u'年龄')
    birthday = models.DateTimeField(
            blank=True, verbose_name=u'生日')
@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
    list_display = ('id', 'first_name', 'last_name', 'gender', 'age', 'birthday')
    list_per_page = 20
  1. 直接激活过滤器

过滤器位于Admin页面的右侧,通过 list_filter 可以直接激活 Student 中已经存在的模型。注:list_filter 应该是一个列表或元组。Filter 会自动列出所有不同的姓:

# 直接激活
list_filter = ('first_name',)

在这里插入图片描述

当然,其指定的字段应该是BooleanField、CharField、DateField、DateTimeField、IntegerField、ForeignKey 或ManyToManyField中的一种。并且其属性可以为对应关联的外键,通过两个下划线指定关联表中对应属性:FK__key

  1. 激活带选项的属性

很多时候,我们的属性只有固定的几种类别,比如性别;一般我们会为该属性绑定选项,这样在展示时也更加直观:

choices_gender = [
    (0, 'male'),
    (1, 'femal'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值