我有一些模型,我想从这些数据生成一个多选形式.

因此,表单将包含每个类别的条目,选择将是该类别中的技能.

models.py

class SkillCategory(models.Model):

name = models.CharField(max_length=50)

class Skill(models.Model):

name = models.CharField(max_length=50)

category = models.ForeignKey(SkillCategory)

有没有办法自动生成表单字段?

我知道我可以在每个SkillCategory的表单中手动添加“SkillCategory”条目,但将其作为模型的原因是技能和技能类别可以自由编辑.

我想做这样的事情:

(我试过这个,但没有让它工作,不记得确切的错误…)

forms.py

class SkillSelectionForm(forms.Form):

def __init__(*args, **kwargs):

super(SkillSelectionForm, self).__init__(*args, **kwargs)

for c in SkillCategory.objects.all():

category_skills = [(pk, s.name) for s in c.skill_set.all()]

setattr(self, c.name, forms.MultipleChoiceField(choices=category_skills, widget=forms.CheckboxSelectMultiple))

这将使用SkillCategory.name创建表单字段条目,并将选项分配为Skill中的选项. field_name / display_name用于避免非ascii类别名称的问题.

forms.py

def get_categorized_skills():

skills = {}

for s in Skill.objects.values('pk', 'name', 'category__name').order_by('category__name'):

if s['category__name'] not in skills.keys():

skills[s['category__name']] = []

skills[s['category__name']].append((s['pk'], s['name']))

return skills

class SkillSelectionForm(forms.Form):

def __init__(self, *args, **kwargs):

super(SkillSelectionForm, self).__init__(*args, **kwargs)

skills = get_categorized_skills()

for idx, cat in enumerate(skills.keys()):

field_name = u'category-{0}'.format(idx)

display_name = cat

self.fields[field_name] = forms.MultipleChoiceField(choices=skills[cat], widget=forms.CheckboxSelectMultiple, label=display_name)

django.forms生成HTML,python – 在django中为表单自动生成表单字段相关推荐

  1. R语言使用edit函数在Rsudio中生成数据编辑器(在windows中生成编辑器)、在编辑器中输出需要的数据生成最终的dataframe

    R语言使用edit函数在Rsudio中生成数据编辑器(在windows中生成编辑器).在编辑器中输出需要的数据生成最终的dataframe 目录

  2. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  3. xml建模包括以下_一种基于xml建模的印刷出版中多元组合符号自动生成方法

    一种基于xml建模的印刷出版中多元组合符号自动生成方法 [技术领域] [0001] 本发明属于印刷出版技术领域,具体涉及一种基于XML建模的印刷出版中多元组 合符号自动生成方法. [背景技术] [00 ...

  4. 管家婆有未记账的凭证怎么办_管家婆中输入单据是否自动生成凭证

    管家婆财贸系列产品都是自动生成凭证,在系统配置里面可以选择,自动接收进销存生成的凭证打勾就行了,如:填写了进货单或销售单,点保存后,他就会自动生成凭证传到总账这边,打开填制凭证,里面就可找到, 管家婆 ...

  5. 自动生成Android界面,面向Android的Web Service界面自动生成技术研究

    摘要: 据统计,开发人员在开发应用程序的过程中,接近一半的代码用于用户界面部分,大约一半的运行时间用于执行这一部分.所以,减少用户界面部分的开发代码和运行时间,能有效提高程序的运行效率.智能家居中,由 ...

  6. react骨架屏自动生成_用纯 DOM 的方式结合 Puppeteer 自动生成网页骨架屏

    骨架屏是在页面数据尚未加载完成前先给用户展示出页面的大致结构,直到请求数据返回后再显示真正的页面内容:随着单页应用( SPA )的越来越流行,单页应用的用户体验也越来越得到前端开发者的关注:为了优化用 ...

  7. 【编译原理】 实验三 LL(1)分析法(LL1分析表的自动生成)

    写在前面 由于代码较长,csdn对文章总长度有字数限制,想只看完整代码的请移步另一篇博客. https://blog.csdn.net/qq_46640863/article/details/1257 ...

  8. 编译原理 实验四 LR(0)分析法(LR0分析表的自动生成)

    写在前面 由于代码较长,csdn对文章总长度有字数限制,想只看完整代码的请移步另一篇博客. https://blog.csdn.net/qq_46640863/article/details/1257 ...

  9. AI自动文本生成怎么做?这几个工具能自动生成文章

    在今天这个数字化时代,AI技术的迅猛发展让我们惊叹不已.其中,AI自动文本生成技术更是让人瞠目结舌.无论是新闻报道.短篇小说.还是商业广告,它都可以通过算法与数据的组合,自动生成高质量.连贯流畅的文章 ...

  10. golang mysql 自动建表_mysql表结构自动生成golang struct

    a lib for golang , generate mysql table schema to golang struct mysql表结构自动生成golang struct github地址 安 ...

最新文章

  1. PHP-Fpm应用池配置
  2. Windows下创建静态库
  3. 【解决办法】Oracle登录报错ORA-28000: the account is locked
  4. 十大排序算法之快速排序(两种方法)
  5. Nutshell中的Java 8语言功能-第2部分
  6. cygwin开发环境搭建与apt-cyg的应用
  7. ROS修改pkg名和node名教程
  8. [案例分析] 打造值得信任的个人品牌究竟靠什么?
  9. 科学和工程中的信号处理
  10. P1165 日志分析 洛谷
  11. GitHub的page构建自己的博客以及添加自己的域名
  12. html5个人简历代码模板,个人简历HTML模板
  13. LDN蓝牙双模键盘驱动和固件更新日志
  14. 博图v15编程手册_好消息!全套西门子plc编程软件,案例和说明书下载
  15. 对Python的深度学习库Theano的介绍
  16. nb-lot plc python_你一定要了解的NB-IoT !
  17. Python基础07
  18. wireshark流量分析--巧观察
  19. 今日头条,今日特卖自媒体号如何申请。
  20. 被高通裁员两次,清华毕业华裔工程师跳楼身亡!中年IT男,为何这么难?

热门文章

  1. smarty编译,缓存原理
  2. vue-router 中踏过的坑
  3. 怎样快速的学习微信小程序
  4. 突破10万高并发的nginx性能优化经验(含内核参数优化)...
  5. js变量按照存储方式区分,有哪些类型,并表述其特点
  6. 基础才是重中之重~对象的生与死
  7. 元数据(MetaData)
  8. JS中某事件需要同时调用几个function另类解决办法。
  9. ZXing开发彩色二维码
  10. 计算机网络rip 图片,计算机网络-RIP协议