你继承Django的ModelChoiceField并修改它的render_options()和render_option()方法来显示你所需要的对象的属性。我想你也需要你自己的ModelChoiceIterator的子类,这样它不仅可以吐出id/label元组,而且可以分离出你需要的所有数据。

我只是找到了一个自定义的SelectWidget的实施OpenStack's dashboard:

class SelectWidget(widgets.Select):

"""

Customizable select widget, that allows to render

data-xxx attributes from choices.

.. attribute:: data_attrs

Specifies object properties to serialize as

data-xxx attribute. If passed ('id',),

this will be rendered as:

option_value

where 123 is the value of choice_value.id

.. attribute:: transform

A callable used to render the display value

from the option object.

"""

def __init__(self, attrs=None, choices=(), data_attrs=(), transform=None):

self.data_attrs = data_attrs

self.transform = transform

super(SelectWidget, self).__init__(attrs, choices)

def render_option(self, selected_choices, option_value, option_label):

option_value = force_unicode(option_value)

other_html = (option_value in selected_choices) and \

u' selected="selected"' or ''

if not isinstance(option_label, (basestring, Promise)):

for data_attr in self.data_attrs:

data_value = html.conditional_escape(

force_unicode(getattr(option_label,

data_attr, "")))

other_html += ' data-%s="%s"' % (data_attr, data_value)

if self.transform:

option_label = self.transform(option_label)

return u'%s' % (

html.escape(option_value), other_html,

html.conditional_escape(force_unicode(option_label)))

编辑

只要你提供这样的选择,它应该工作:

def formfield_for_foreignkey(self, db_field, request, **kwargs):

if db_field.name == 'dummy':

widget = SelectWidget(data_attrs=('bar',))

choices = [(foo.id, foo) for foo in Foo.objects.all()]

form_field = forms.ChoiceField(

choices=choices, widget=widget)

return form_field

return super().formfield_for_foreignkey(db_field, request, **kwargs)

django 表单html5,我们如何在django管理表单中添加动态html5数据属性相关推荐

  1. html表单颜色选择器,如何在Django管理中使用HTML5颜色选择器

    我试图在Django的管理页面中实现HTML5 colorpicker. 这是我的模型:#model.py ... class Category(models.Model): ... color = ...

  2. Django表单类forms与模型关联以及表单验证

    前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...

  3. HTML中的form表单的标签、属性、属性值; CSS以及HTML5新增属性、属性值

    form表单HTML5.CSS3标签及属性.属性值 form表单HTML标签.属性.属性值: (单行文本输入框) (密码输入框) (单选框) (多选框) (提交按钮) (重置按钮) 或者按钮(空按钮) ...

  4. html表单验证案例,HTML5表单验证(4个实用的表单美化案例)

    multipart/form-data 在使用包含文件上传控件的表单时,必须使用 autocomplete="on" 自动补全功能 novalidate 不验证 placehold ...

  5. ajax 表单提交传文件,Ajax提交Form表单及文件上传

    刚刚申请下来的博客,写得第一篇.有点小激动,本人以前是一名工业3D设计师突然有些变故做上了JavaWeb开发: 前几天,发现了一些小问题.我在写后台管理页面时,需要上传一张图片.于是我就用很普通的Fo ...

  6. jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据

    1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...

  7. layuiajax提交表单控制层代码_Ninja Forms:免费的联系表单插件,却提供了付费表单才有的功能【视频+图文】...

    Ninja Forms不仅能够可视化创作询盘表单,还能记录询盘.添加隐藏字段.添加反垃圾验证.提交表单时可设置多个动作,这在Wpforms插件中可都是付费功能,同时,Ninja Form激活安装量一百 ...

  8. python开源报表系统_流程设计器、表单设计器和简单报表管理开源OA系统smart-web...

    smart-web2是一套相对简单的OA系统:包含了流程设计器,表单设计器,权限管理,简单报表管理等功能: 系统后端基于SpringMVC+Spring+Hibernate框架,前端页面采用JQuer ...

  9. java表单自动绑定数据_java工作流系统表单自动 获取数据

    关键词:工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流  bpm工作流系统  java工作流主流框架  自定义工作流引擎 表单设计器  流程设计器 什么是数据自动获 ...

最新文章

  1. 在windows程序中嵌入Lua脚本引擎--编写自己的Lua库
  2. windows azure之创建虚拟机
  3. Gstreamer基础知识介绍
  4. linux-文件类型-七种
  5. c++学习笔记---指针
  6. drools规则引擎源码解析
  7. MATLAB通过两点画三维直线(plot3)
  8. 0x68111002_黑苹果10.12.2驱动R9 270显卡成功一例
  9. ajax返回String类型导致的flowplayer报错p.replace is not a function问题
  10. 二手房房源信息数据分析项目完整流程
  11. pands 画图 调整大小_关于数学建模的画图学习建议
  12. vue引入腾讯地图,去除水印
  13. python mk趋势检验_时序数据常用趋势检测方法
  14. 【历史上的今天】11 月 16 日:RISC-V 领导者出生;微软发布 Windows CE;电子管问世
  15. 01-空投Lynda
  16. 键盘怎么锁定计算机,电脑键盘锁住了怎么解锁 详细方法介绍
  17. python echarts城市热力图_ECharts-热力图实例
  18. arduino中 #define、const和int 的差别
  19. OpenHarmony学习笔记——I2C驱动0.96OLED屏幕
  20. 郑大计算机专业英语第11章在线测试,郑大远程教育大学英语I 1-10章测试题

热门文章

  1. Jenkins 与 Kubernetes 的 CI 与 CD Git + Maven + Docker+Kubectl
  2. 基于Python的开源人脸识别库,离线识别率高达99.38%
  3. 不间断电源ups标准_UPS不间断电源正确使用方法
  4. python property作用_python中@property的作用和getter setter的解释
  5. XM7 FOR ANDROID,视频剪辑制作app-视频剪辑制作xm8.0安卓版-蜻蜓手游网
  6. IE或Chrome浏览器玩Xbox游戏能实现吗
  7. win7电脑假死机怎么办
  8. 关于提高网页加载速度个人学习以及经验总结
  9. mysql partition 性能_通过分区(Partition)提升MySQL性能
  10. js二维数组传递java,ActiveX获取JavaScript传递的二维数组