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

在django admin中过滤下拉列表值

在Django Admin中过滤下拉列表值,可以通过以下几种方法实现:

  1. 使用ModelAdmin中的formfield_for_choice_field方法自定义下拉列表值。
代码语言:python
代码运行次数:0
复制
from django import forms
from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_choice_field(self, db_field, request, **kwargs):
        if db_field.name == 'my_choice_field':
            kwargs['choices'] = MyModel.MY_CHOICES.filter(some_filter=True)
        return super().formfield_for_choice_field(db_field, request, **kwargs)

admin.site.register(MyModel, MyModelAdmin)
  1. 使用ModelAdmin中的get_field_queryset方法自定义下拉列表值。
代码语言:python
代码运行次数:0
复制
from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    def get_field_queryset(self, db, db_field, request):
        if db_field.name == 'my_choice_field':
            return MyModel.objects.filter(some_filter=True)
        return super().get_field_queryset(db, db_field, request)

admin.site.register(MyModel, MyModelAdmin)
  1. 使用ModelForm中的__init__方法自定义下拉列表值。
代码语言:python
代码运行次数:0
复制
from django import forms
from .models import MyModel

class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['my_choice_field'].queryset = MyModel.objects.filter(some_filter=True)

    class Meta:
        model = MyModel
        fields = '__all__'

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm

admin.site.register(MyModel, MyModelAdmin)

以上方法可以实现在Django Admin中过滤下拉列表值,从而提高数据的可读性和可维护性。

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

相关·内容

Django中使用下拉列表过滤HTML表格数据

在Django中,你可以使用下拉列表(即选择框)来过滤HTML表格中的数据。这通常涉及两个主要步骤:创建过滤表单和处理过滤逻辑。创建过滤表单首先,你需要创建一个表单,用于接收用户选择的过滤条件。...1、问题背景当使用 Django 进行 Web 开发时,我们在页面中经常需要使用 HTML 表格来展示数据。如果我们需要根据某些条件对表格中的数据进行过滤,可以使用下拉列表来实现。...具体来说,我们可以通过以下步骤实现下拉列表的动态变化:在 HTML 页面中添加一个下拉列表,用于选择年份。在 HTML 页面中添加一个下拉列表,用于选择月份。...在 HTML 页面中添加一个下拉列表,用于选择供应商类型。在 JavaScript 代码中,添加一个事件监听器,监听下拉列表的选项改变事件。...通过以上步骤,我们可以在Django中实现使用下拉列表来过滤HTML表格数据的功能。如有更多问题咨询可以留言讨论。

11510
  • requests库中解决字典值中列表在URL编码时的问题

    该问题主要涉及如何在模型的 _encode_params 方法中处理列表作为字典值的情况。问题背景在处理用户提交的数据时,有时需要将字典序列化为 URL 编码字符串。...在 requests 库中,这个过程通常通过 parse_qs 和 urlencode 方法实现。然而,当列表作为字典值时,现有的解决方案会遇到问题。...这是因为在 URL 编码中,列表值会被视为字符串,并被编码为 “%5B%5D”。解决方案为了解决这个问题,我们需要在 URL 编码之前对字典值进行处理。一种可能的解决方案是使用 doseq 参数。...在该函数中,我们使用 urllib.parse.urlencode 方法对参数进行编码,同时设置 doseq 参数为 True。通过这种方式,我们可以在 URL 编码中正确处理列表作为字典值的情况。...结论本文讨论了 issue #80 中提出的技术问题,即如何在模型的 _encode_params 方法中处理列表作为字典值的情况。

    17430

    在 Django 表单中传递自定义表单值到视图

    在Django中,我们可以通过表单的初始化参数initial来传递自定义的初始值给表单字段。如果我们想要在视图中设置表单的初始值,可以在视图中创建表单的实例时,传递一个字典给initial参数。...1、问题背景我们遇到了这样一个问题:在使用 Django 表单时,我们希望将自定义表单中的值传递到视图中。然而,我们发现无法为多选选项的每个选项传递值。...在渲染表单时,只有一个字符字段,而多选框中有多个选择。我们想知道是否有办法解决这个问题,以及表单集是否可以在这里提供帮助。我们对 Django 还很陌生,因此希望得到一些解释,以便更好地理解和学习。...在我们的例子中,我们可以创建一个表单集来处理每个 StateOptionOutcome 对象。

    11710

    35.Django2.0文档

    . {% endcomment %} 3.过滤器 模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器使用管道字符, {{ name|lower }} #它功能是转换文本为小写。...在你的 Django 应用中,你或许希望根据某字段的值对检索结果排序,比如说,按字母顺序。 那么,使用order_by()这个方法就可以搞定了。 ?...在`` book`` 应用程序目录下的`` admin.py`` 文件中,每次调用`` admin.site.register()`` 都将那个模块注册到管理工具中。...(3)添加过滤器 接下来,让我们为Book列表页添加一些过滤器。...例如,我们的book数据库膨胀到拥有数千条publishers的记录,以致于book的添加页面装载时间较久,因为它必须把每一个publisher都装载并显示在`` 下拉框`` 中。

    11.3K100

    Django admin管理工具的使用、定制及源码解析

    你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: # Application definition INSTALLED_APPS = [ 'django.contrib.admin...的定制 在admin.py中只需要讲Mode中的某个类注册,即可在Admin中实现增删改查的功能,如: admin.site.register(models.UserInfo) 但是,这种方式比较简单,...BlogAdmin(admin.ModelAdmin): #listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键) list_display...11.formfield_for_foreignkey ModelAdmin.formfield_for_foreignkey(db_field, request, **kwargs)¶ 这个方法可以过滤下拉列表的数据...最终生成的结果就是可以选择所有的省,也可以选择所有的市,这并不合理,正确的应该是在选择某个省的时候在市的下拉列表里只有该省的城市。 而,django原生并不能做到这么智能。

    4.1K40

    使用 Django 的 admin 定制后台,丰富自己网站的后台管理系统

    2、3步结合起来,在创建模型的管理类的同时注册类,这就需要使用 admin 的装饰器,上面的例子改用装饰器之后的代码如下: from django.contrib import admin from ....ModelAdmin 的详细参数 查看源码 为了更好的了解 Django 的管理类有哪些基本属性,我们可以去 Django 的源码中查找这个类的源代码,看一下它有哪些默认的属性和方法。...exclude 这个属性是用来设置不需要展示的字段的,接受一个元祖或者列表,只要设置了的字段就不会在后台显示,比如这个例子中我不想要后台显示文章的阅读量。...list_filter 属性是过滤器,可以用来筛选,设置了这个之后可以在后台的侧边栏看到可以用来筛选的字段的列表,效果如图所示: filter_horizontal 这个属性非常有用,它可以给模型中的多选字段添加左右选框...,可以自定义进行过滤,具体过滤方式可以看代码。

    3.2K10

    Django 学习笔记之表单

    另外,博客系统中的评论模块也是这个原理。因此,在一些站点上会爆出 XSS 漏洞。原因可能是编码者没有对用户提交的数据进行过滤或者过滤不严,直接存储到数据库中。...表单中会根据页面显示需求,采用不同的表单元素来呈现,比如:文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等等 它可能长得这个样子 表单使用标签...target 属性:规定 action 属性中地址的目标(默认:_self)。如果填写值 _blank ,当点击按钮提交数据时,在新窗口中打开新的页面。 常用表单元素有以下这些: 中的值来获取用户输入的内容的。以 GET 方式请求为例,有个单行输入框定义 name="q"。当你在输入框中填写值 moneky 然后提交。...view.py 中, 可以获取、过滤到用户提交的数据。

    2.6K30

    Python:Django框架

    settings.py :该 Django 项目的设置或配置。 查看并理解这个文件中可用的设置类型及其默认值。 urls.py:Django项目的URL设置。 可视其为你的django网站的目录。...中显示的标签 initial : 初始在字段中显示的值 help_text: 在字段后面显示定义的帮助文档 error_messages : 是一个字典,错误提示信息 show_hidden_initial...--渲染成标签--> {{ forms.as_ul }} 单选、复选、下拉列表 在forms.py...']#在列表页显示的条目 list_editable = ['icon'] #在列表页即可修改 利用django.utils.html转义实现图片预览 1.在model.py中定义图片预览函数...中注册 ```python @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): #设置要显示在后台列表中的字段

    4.4K40

    Django快速入门——投票程序(7) 自定义后台

    自定义后台更改列表 现在投票的后台页看起来很不错,让我们对问题列表页面进行一些调整——改成一个能展示系统中所有投票的页面。默认情况下,Django 显示每个对象的 str() 返回的值。...为此,使用 list_display属性,它是一个包含要显示的字段名的元组,在更改列表页中以列的形式展示这个对象: class QuestionAdmin(admin.ModelAdmin):...list_display = ["question_text", "pub_date", "was_published_recently"] 你可以通过在该方法上(在 polls/models.py 中...编辑文件 polls/admin.py,将以下代码添加至 QuestionAdmin: list_filter = ["pub_date"] 这样做添加了一个“过滤器”侧边栏,允许人们以 pub_date...字段来过滤列表: 让我们再添加搜索功能: search_fields = ["question_text"] 在列表的顶部有了一个搜索框。

    24240

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

    准备工作 创建管理员的用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 在admin.py中注册模型类 1234567 from django.contrib...类可以控制不同模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式 上文中展示了TestAdmin类的一种注册方法,还有一种方法,就是使用装饰器注册,如下: 123 @admin.register... 默认显示在顶部,默认值分别为:False 和 True,改为只显示在底部: 1234 class TestAdmin(admin.ModelAdmin):    list_per_page = 20    ... title2(self):        return self.title 过滤器 用 list_filter 来激活管理更改列表页面右侧侧栏的过滤器,如下截图所示: list_filter ...应是一个元素的列表或元组,会将对应字段的值列出来,一般用于快速过滤有重复值的字段 12 class TestAdmin(admin.ModelAdmin):    list_filter = ['is_delete

    1.2K00

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

    类可以控制不同模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式 上文中展示了TestAdmin类的一种注册方法,还有一种方法,就是使用装饰器注册,如下: 123 @admin.register... = 'unknown' 以上通过指定方法属性来控制显示是新老版本通用的,在Django3.2可以通过给装饰器传参来解决:   在model.py中: 1234567891011121314151617...=True)    def title2(self):        return self.title   或者在admin.py中: 123456789101112 from XXX import...过滤器 用 list_filter 来激活管理更改列表页面右侧侧栏的过滤器,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括外键字段(注意list_display...是不能直接接收外键字段的),会将对应字段的值列出来,一般用于快速过滤有重复值的字段。

    1.3K30

    Django Admin后台管理

    # 操作选项在底部是否显示 actions_on_bottom = True # 自定义列表页显示的列表项 list_display = ['id', 'name',...(StudentInfo) 显示效果如下 list_display中的项可以是模型字段,也可以是模型方法(该方法必须有返回值) 修改应用下models.py中的SchoolInfo类 # 学校模型类...右侧过滤器,会将对应字段的值列出来,用于快速过滤,通过list_filters属性设置。上方搜索框,用于对指定字段的值进行搜索,支持模糊查询,通过search_fields属性进行设置。...actions_on_top = True # 操作选项在底部是否显示 actions_on_bottom = True # 自定义列表页显示的列表项 list_display...这里以tinymce为例在Django Admin后台中如何使用富文本编辑器。

    2.8K10

    Django—常用功能

    当配置多个中间件时,会按照MIDDLEWARE中的注册顺序,也就是列表的索引值,从前到后依次执行的。...列表页显示效果如下图: ? 控制管理页展示 类ModelAdmin可以控制模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式。...右侧栏过滤器 属性如下,只能接收字段,会将对应字段的值列出来,用于快速过滤。一般用于有重复值的字段。...在下拉列表中输出的是对象的名称,可以在模型类中定义str方法用于对象转换字符串。 1)打开booktest/models.py文件,修改AreaInfo类,添加str方法。...上去 3.3 重写模板 1)在templates/目录下创建admin目录 2)打开当前环境中Django的目录,再向下找到admin的模板 3)在admin文件夹中创建base_site.html 编辑

    2.7K30

    django后台管理-admin

    0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册的app中的admin文件中导入模型然后注册模型 admin.site.register(导入的模型类...可以在settings.py中设置: LANGUAGE_CODE = 'zh-CN' TIME_ZONE = 'Asia/Shanghai' 1.8版本之后的language code设置不同: LANGUAGE_CODE...= 'zh-hans' TIME_ZONE = 'Asia/Shanghai' 三.admin界面优化 1、记录列表基本设置 from django.contrib import admin from...#listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键) list_display = ('id', 'caption', 'author', 'publish_time...(name='management') 此处括号内name值必须设置,否则将无法使用admin设置权限,至于设置什么值,经本人测试,没有影响。

    88610
    领券