为djangoadmin搜索searchfields添加搜索框提示文字
如上图所示django admin在ModelAdmin中添加search_fields即可显示一个搜索框,但是不能设置搜索框的提示文字,在实际开发中要让使用的人知道输入什么可以进行快速检索,是一个快速提升用户体验的方法,在网上找了很多,也没有很好的解决这个问题,今天我们就动手实现一个!
我这里已经通过下方命令创建了一个名为dadmin的app python manage.py startapp dadmin
在dadmin目录下新建一个templatetags的文件夹,并且在其内部创建一个search_with_placeholder.py的文件,内部代码如下: # dadmin/templatetags/search_with_placeholder.py from django.contrib.admin.templatetags.admin_list import (register, search_form) from django.contrib.admin.templatetags.base import InclusionAdminNode def search_form_plus(cl, search_placeholder: str = ""): """ Display a search form for searching the list with placeholder. """ return dict(search_form(cl), search_placeholder=search_placeholder) @register.tag(name="search_form_plus") def search_form_tag(parser, token): return InclusionAdminNode(parser, token, func=search_form_plus, template_name="search_form_plus.html", takes_context=False)
在与项目同级别,也就是根目录,创建一个templates的目录,再在其内部创建一个admin文件夹,重写admin的任何默认模板只需要放到这个文件夹即可,这也是修改django admin默认模板最简便的方法,我们在其内部创建一个search_form_plus.html的文件,内部代码如下: {% load i18n static %} {% if cl.search_fields %} {% endif %}
再在dadmin目录下创建一个templates/dadmin的文件夹路径,再在其内部创建一个change_list.html的文件,内部代码如下: {% extends "admin/change_list.html" %} {% load search_with_placeholder %} {% block search %}{% search_form_plus cl search_placeholder %}{% endblock %}
之后在dadmin目录中的admin.py中定义一个所有ModelAdmin的基础类BaseAdmin,以后所有用到ModelAdmin的地方我们都继承BaseAdmin即可,代码如下: class BaseAdmin(admin.ModelAdmin): change_list_template = "dadmin/change_list.html" def changelist_view(self, request, extra_context=None): # 列表视图, 添加search_placeholder = "" # 即可定义搜索框的值,也可以向列表页得传进任何数据 search_placeholder = getattr(self, "search_placeholder", False) if search_placeholder: extra_context = extra_context or {} extra_context["search_placeholder"] = search_placeholder return super().changelist_view(request, extra_context=extra_context)
使用也非常简单,所有的ModelAdmin都只需要继承他即可,如下例所示: class CategoryModelAdmin(BaseAdmin): """ 分类管理配置 """ list_display = ("id", "name", "is_show", "cate_icon", "sort", "add_date", "operate") search_fields = ("name",) # 设置搜索框 search_placeholder = "请输入分类名称搜索" # 设置搜索框的提示文字 admin.site.register(CategoryModel, CategoryModelAdmin)
其他列表页也需要设置搜索框文字,继承BaseAdmin即可,非常简单,直接拿去使用吧!
相关源代码请参考:https://gitee.com/xingfugz/django-mall
如果你也在学习django,那么欢迎私信小编一起交流学习,欢迎star以上项目,给个鼓励,也欢迎您能关注我的头条号,一起学习交流,上边有很多学习资料哦! (此处已添加圈子卡片,请到今日头条客户端查看)
买Mate40Pro必须搭配手表?5G换机潮终于来临,华为要打一场艰难之战本文来源时代周报作者杨玲玲现在店里卖的大部分都是5G手机,价位也相对低很多,4G手机已经很少。5月15日,在广州市海珠区一家小米专卖店,销售人员对时代周报记者介绍称。工信部网站数据
突发今天你造车了没?美的正式宣布将发布新能源汽车新品文懂车帝原创邢秋鸿懂车帝原创行业经历了小米大疆360之后,现在任何人说要造车,都掀不起观众太长时间的讨论。但跨界造车的名单还在增加,5月17日晚间,美的官方发布消息,新能源汽车新品
掌阅iReader新品发布会官宣5月25日重塑想象IT之家5月17日消息掌阅iReader官方宣布,将于5月25日召开2021新品发布会,标语为重塑想象。IT之家了解到,掌阅的上一款新品还是去年10月份的iReaderSmart2
腾讯社交电商APP小鹅拼拼上线5月17日消息,小鹅拼拼独立App已正式上线,Slogan为享受每一分。据介绍,小鹅拼拼是腾讯旗下一款基于真实社交的好物推荐电商APP,热爱分享的用户可通过小鹅拼拼进行商品种草,热
鸿蒙OS核试验已经启动,横空出世不再遥远在曾经很长一段时间中,华为打造的鸿蒙OS都被人诟病套娃安卓换汤不换药等等,但随着时间的一步步推进,越来越多的人发现鸿蒙OS与安卓有着本质上的区别。经过了两年多的迭代进化,如今的鸿蒙
今年618什么路由值得买本内容来源于什么值得买APP,观点仅代表作者本人作者龙子湖提督创作立场声明每到购物季总会有人需要写在前面1本次路由推荐不再推荐单价1500元以上的机型,因为WiFi6E快要来了,想
小米智能家居营销成功后,雷军又把眼光放在了剃须刀上,物美价廉导语小米智能家居营销成功后,雷军又在搅局暴利行业!把眼光放在了剃须刀上,物美价廉,生态链新品媲美飞利浦7000性能。现在这个时代是一个科技发展的时代,科技产业是一个暴利的行业。近些
华为鸿蒙迎来第一波差评,虽然很难听,但是很真实操作系统作为智能化产品中硬件和软件的调配者和统一管理者,对智能化产品的正常运用有着至关重要的作用,失去操作系统的智能化产品,基本无法使用。操作系统的地位也就日渐高涨起来,尤其是移动
区块链是何物?楼主首先要搞清楚2个逻辑。一个是区块链技术,一个是区块链投资(鱼龙混杂,需要辨别)。区块链,本质上是一个去中心化的分布式账本数据库。P大点事,链上的每个节点都会同步复制并记账,信息
苹果雇佣厌女经理,2000员工请愿辞退据TheVerge报道,苹果员工发布了一份请愿书,要求苹果对新入职的一名产品经理展开调查。这位产品经理来自Facebook广告定位团队,此前曾写过一本自传,在书中他表达了对女性的歧
前Facebook产品经理被苹果辞退,被爆料发布歧视女性的文章据国外媒体报道,最近苹果公司雇用的一名前Facebook的产品经理Martinez,对在其过去的文章攻击女性软弱和竟会满嘴胡言后,引起了轰动,随后他被苹果公司以歧视女性为由解雇而A