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


Posted in Python onApril 07, 2020

环境:Django 2.0.7 xadmin 2.0.1

需求:下拉表单显示的是模型的其他表项或者外键

方法:在adminx.py文件中,在class YourModel Admin中重写函数

# 重写formfield_for_dbfield,设计add和edit表单
  def formfield_for_dbfield(self, db_field, **kwargs):
    if not self.request.user.is_superuser:
     # 对case这个表项的下拉框选择进行过滤
      if db_field.name == "case": 
        kwargs["queryset"] = Case.objects.filter(case_owner=self.request.user).order_by('id')                        
      # 对assigned_recipient这个表项的下拉选择进行过滤
      # 并且需要用到外键
      if db_field.name == "assigned_recipient":
        stu_ids = StudentDoctor.objects.filter(doctor=self.request.user).values('student_id')
        ids = []
        # 这里使用循环,为了下方再次查询时在list中使用in
        for id in stu_ids:
          ids.append(id['student_id'])
  # 根据主键在ids列表中查询得到Queryset。注意kwargs["queryset"]一定是queryset
        kwargs["queryset"] = User.objects.filter(pk__in=ids)
      return db_field.formfield(**dict(**kwargs))

    else:
      attrs = self.get_field_attrs(db_field, **kwargs)
      return db_field.formfield(**dict(attrs, **kwargs))

补充知识:Django使用模板 实现下拉菜单并动态填充后台数据

<label class="control-label col-md-3 col-sm-3 col-xs-12" for="first-name">角色<span class="required"></span>
</label>
<select name="name">
  {% for name in data_list %}
  <option id="name" value="{{ name }}">{{ name }}</option>
  {% endfor %}
</select>

注意: 注意 <select>中加入了一个name "name" 后台也正是通过这个name来获得数据的

以上这篇xadmin使用formfield_for_dbfield函数过滤下拉表单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python解析基于xml格式的日志文件
Feb 25 Python
Python2.X/Python3.X中urllib库区别讲解
Dec 19 Python
Python遍历pandas数据方法总结
Feb 09 Python
python+opencv识别图片中的圆形
Mar 25 Python
浅谈flask源码之请求过程
Jul 26 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
Oct 30 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
keras模型可视化,层可视化及kernel可视化实例
Jan 24 Python
Python selenium爬取微博数据代码实例
May 22 Python
Django自带的用户验证系统实现
Dec 18 Python
python 窃取摄像头照片的实现示例
Jan 08 Python
详解Python openpyxl库的基本应用
Feb 26 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 #Python
Django Xadmin多对多字段过滤实例
Apr 07 #Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 #Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 #Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 #Python
django 实现简单的插入视频
Apr 07 #Python
django实现后台显示媒体文件
Apr 07 #Python
You might like
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
Javascript 继承实现例子
2009/08/12 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
js实现分割上传大文件
2016/03/09 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
python写一个md5解密器示例
2018/02/23 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
python 递归相关知识总结
2021/03/03 Python
酒店人事专员岗位职责
2013/12/19 职场文书
《锄禾》教学反思
2014/04/08 职场文书
竞聘上岗演讲
2014/05/19 职场文书
农村文化建设标语
2014/10/07 职场文书
结婚堵门保证书
2015/05/08 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫