django ORM中的复选MultiSelectField的使用
下载和介绍: https://pypi.org/project/django-multiselectfield/
在django ORM的使用中,经常会出现选择的情况,例如:
class person(odels.Model):
sex_type = ((‘male‘,u‘男‘), (‘female‘,u‘女‘))
sex = models.CharField(u"性别", choices=sex_type,max_length=)
但并不是所有的选择都是只有一个结果的,例如
class person(odels.Model):
language_choices= ((‘chinese‘,u‘汉语‘), (‘english‘,u‘英语‘),(‘french‘,‘法语‘))
language = models.CharField(u"使用语言", choices=language_choices,max_length=)
很明显,假如一个人又会汉语,又会英语,那么这个choices就不能上线我们的目的了,那么久可以使用MultiSelectField来实现了,例如
class person(odels.Model):
language_choices= ((‘chinese‘,u‘汉语‘), (‘english‘,u‘英语‘),(‘french‘,‘法语‘))
language = MultiSelectField(u"使用语言",choices=language_choices)
需要注意的几点:
1:MultiSelectField不支持list_display,如果在list_display中添加MultiSelectField的项就会出现报错,所以当你想在admin页管理你的数据库资料时,不能在查看页面查看到MultiSelectField的项的内容。
2:当你想使用form直接在前端生成编辑或查看数据库内容的页面时,MultiSelectField的项不能直接显示出来,而是需要进行特殊的处理,其格式如下(其中provider表示query对象,field表示MultiSelectField项)
{% for value, text in providers.field.choices %}
<div class="ui slider checkbox">
<input id="id_providers_{{ forloop.counter0 }}" name="{{ form.providers.name }}" type="checkbox" value="{{ value }}"{% if value in checked_providers %} checked="checked"{% endif %}>
<label>{{ text }}</label>
</div>
{% endfor %}
3:在使用filter对MultiSelectField项进行查询时需要注意MultiSelectField项在数据库内存的是一个列表类型的数据,如果查询选择的项和你的查询条件完全相同的数据直接使用
models.Person.objects.filter(language=[‘chinese‘])
但如果想要filter到所有选择了其中一个选项的数据(包括只选择了该选项的数据和同时选择了该选项和其他选项的数据),直接使用django提供的查询方法就不行了,那么可以使用Q语句来实现查询,其形式为()
models.persom.objects.filter( Q(language=‘chinese‘)|Q(language__startswith=‘chinese,‘)|Q(language__endswith=‘,chinese‘)|Q(language__contains = ‘,chinese,‘)
django ORM中的复选MultiSelectField的使用
原文地址:http://www.mamicode.com/info-detail-1738920.html
django ORM中的复选MultiSelectField的使用的更多相关文章
- 优化Django ORM中的性能问题(含prefetch_related 和 select_related)
Django是个好工具,使用的很广泛. 在应用比较小的时候,会觉得它很快,但是随着应用复杂和壮大,就显得没那么高效了.当你了解所用的Web框架一些内部机制之后,才能写成比较高效的代码. 怎么查问题 W ...
- 在word中做复选框打对勾钩
在word中做复选框打对勾钩 现在终于搞明白正确的操作方法 一.你在word里输入2610,按alt+X就能出 空checkbox 你在word里输入2611,按alt+X就能出 打了勾的checkb ...
- nodetree中 前面复选框禁用插件
nodetree中 前面复选框的去掉插件 extendTreeCheck.js /** * tree方法扩展 * 作者:小雪转中雪 */ $.extend($.fn.tree.methods, { / ...
- Django ORM 中的批量操作
Django ORM 中的批量操作 在Hibenate中,通过批量提交SQL操作,部分地实现了数据库的批量操作.但在Django的ORM中的批量操作却要完美得多,真是一个惊喜. 数据模型定义 首先,定 ...
- QTableView中嵌入复选框CheckBox 的四种方法总结
搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...
- python QQTableView中嵌入复选框CheckBox四种方法
搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...
- jQuery+SpringMVC中的复选框选择与传值
一.checkbox选择 在jQuery中,选中checkbox通用的两种方式: $("#cb1").attr("checked","checked& ...
- 如何在select下拉列表中添加复选框?
近来在给一个公司做考试系统的项目,遇到的问题不少,但其中的几个让我对表单的使用颇为感兴趣,前端程序员都知道,下拉列表有select标签,复选框有checkbox,但是两者合在一起却少有人去研究,当时接 ...
- 在php中验证复选框
PHP接收多个同名复选框信息不像ASP那样自动转换成为数组,这给使用带来了一定不便.但是还是有解决办法的,就是利用javascript做一下预处理.多个同名复选框在javascript中还是以数组的形 ...
随机推荐
- Jsp与JavaScript区别
有时候会误以为这两个是同一个概念,但其实不是 Jsp全名为Java Server Pages(Java服务器页面),其根本是一个简化的Servlet设计,他实现了在Java当中使用HTML标签.Jsp ...
- css引用优先级
/***************************************css注意事项*******************************************/ 浏览器优先级:设 ...
- Lua 学习之基础篇十<Lua 常见的语法规则>
下面讲一些lua 常见的用法和规则,可以为学习理解lua带来帮助,最后附上的部分是lua的基本操作,基本包含所有常用语法语句. 1. if判断 lua把 nil 和false 视为"假&qu ...
- asp.net中gridview控件的一些基本使用方法
[ 转自苏飞博客]共两篇 (1)菜单目录: GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合Gri ...
- Java内存模型与垃圾回收笔记
内存模型 栈. 局部变量(基本类型)与对象引用:线程隔离.每个方法执行时会创建一个栈帧,存储局部变量等. 堆. 对象实例:线程共享. 方法区.类信息.常量(final).静态变量.符号引用: 线程共享 ...
- CAZAC序列
定义: CAZAC(Const Amplitude Zero Auto-Corelation),即为恒包络零自相关序列. 性质: 1,恒包络特性:任意长度的CAZAC序列幅值恒定. 2,理想的周期自相 ...
- ckeditor粘贴word图片自动上传功能
由于工作需要必须将word文档内容粘贴到编辑器中使用 但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直 ...
- LOJ3120. 「CTS2019」珍珠 [容斥,生成函数]
传送门 思路 非常显然,就是要统计有多少种方式使得奇数的个数不超过\(n-2m\).(考场上这个都没想到真是身败名裂了--) 考虑直接减去钦点\(n-2m+1\)个奇数之后的方案数,但显然这样会算重, ...
- 离线语音Snowboy热词唤醒+ 树莓派语音交互实现开关灯
离线语音Snowboy热词唤醒 语音识别现在有非常广泛的应用场景,如手机的语音助手,智能音响(小爱,叮咚,天猫精灵...)等. 语音识别一般包含三个阶段:热词唤醒,语音录入,识别和逻辑控制阶段. 热词 ...
- c++示例 计算器
#include <iostream> using namespace std; int main() { char op; float num1, num2; cout << ...