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

在django admin中过滤下拉列表值

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

  1. 使用ModelAdmin中的formfield_for_choice_field方法自定义下拉列表值。
代码语言:python
复制
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
复制
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
复制
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表格数据的功能。如有更多问题咨询可以留言讨论。

9310

django admin详情表单显示添加自定义控件的实现

这个时候我们就可以详情内看见button了,但是相对应的,detail的表单添加后,add的表单也会出现一个button,这个不是我们想要的,所以就要想办法让button只存在于detail界面...而弹出窗口的获取可以form添加一个hidden字段,value为我们想要获取的js取值赋值即可。...补充知识:Django admin 列表每行后面添加审核按钮 我就废话不多说了,还是直接看代码吧!...admin的把 pass_audit_str 加入到list_display元组 list_display = (‘id’, ‘create_time’, ‘pass_audit_str’,)...刷新页面即可; 以上这篇django admin详情表单显示添加自定义控件的实现就是小编分享给大家的全部内容了,希望能给大家一个参考。

4.9K20

Django Xadmin多对多字段过滤实例

xadmin是不能像原生admin那样使用formfield_for_manytomany方法来过滤多对多字段 ?...进入xadmin源码,找到了formfield_for_dbfield这个方法,测试是有用的,可以过滤第一个选项框的 ?...补充知识:给django admin后台管理user扩展下拉框及多选框的字段 1.首先在models.py编写扩展User所用到的userProfile模型及下拉框和多选框选项所需要的模型(因为我所做的下拉框和多选框的都是从数据库里面取得...(User) admin.site.register(User, testUserAdmin) 通过这两步就可以试下在django admi台管理User扩展一个下拉框和一个多选框,效果如下图: ?...以上这篇Django Xadmin多对多字段过滤实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

1.8K20

requests库解决字典列表URL编码时的问题

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

12730

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配置搜索域是一个外键时的处理方法

,若不设置则显示 models.py __unicode__(self) 中所返回的 list_display_links = ('category') # 设置页面上哪个字段可单击进入详细页面..., CategoryAdmin) [ 说明 ] 使用 Django admin 系统的搜索时可能会出现“related Field has invalid lookup: icontains”错误,...Django定义了如下A,B两个模型: class A: name=models.CharField(max_length=15) def __unicode__(self):...python2.7,一切操作做完之后,部署到云服务器上后,就在后台管理系统中看到B的属性一栏f显示为A_Object,并没有显示A的属性——name的。...admin配置搜索域是一个外键时的处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.8K20

xadmin使用formfield_for_dbfield函数过滤下拉表单实例

环境:Django 2.0.7 xadmin 2.0.1 需求:下拉表单显示的是模型的其他表项或者外键 方法:adminx.py文件class YourModel Admin重写函数 #...formfield_for_dbfield(self, db_field, **kwargs): if not self.request.user.is_superuser: # 对case这个表项的下拉框选择进行过滤...case_owner=self.request.user).order_by('id') # 对assigned_recipient这个表项的下拉选择进行过滤...中使用in for id in stu_ids: ids.append(id['student_id']) # 根据主键ids列表查询得到Queryset。...} </select 注意: 注意 <select 中加入了一个name “name” 后台也正是通过这个name来获得数据的 以上这篇xadmin使用formfield_for_dbfield函数过滤下拉表单实例就是小编分享给大家的全部内容了

91130

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原生并不能做到这么智能。

4K40

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

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

2.9K10

Django 学习笔记之表单

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

2.5K30

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.3K40

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.1K00

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"] 列表的顶部有了一个搜索框。

20540
领券