Django 如何使用多选枚举。

在Djngo orm 的使用过程中经常会遇到使用多选枚举的情况。但django 提供的models.CharField是单选的。咋办呢?提供两个思路,1、使用一对多,建立多张表实现。
2、第三方插件MultiSelectField库

先上案例:

from multiselectfield import MultiSelectField # ... MY_CHOICES = (('item_key1', 'Item title 1.1'), ('item_key2', 'Item title 1.2'), ('item_key3', 'Item title 1.3'), ('item_key4', 'Item title 1.4'), ('item_key5', 'Item title 1.5')) MY_CHOICES2 = ((1, 'Item title 2.1'), (2, 'Item title 2.2'), (3, 'Item title 2.3'), (4, 'Item title 2.4'), (5, 'Item title 2.5')) class MyModel(models.Model): my_field = MultiSelectField(choices=MY_CHOICES) my_field2 = MultiSelectField(choices=MY_CHOICES2, max_choices=3, max_length=3)

使用方法:
官网地址:https://pypi.org/project/django-multiselectfield/
1、安装

pip install django-multiselectfield

2、注册
Djnago项目的settings.py文件添加multiselectfield

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    #.....................#
    'multiselectfield',

3、使用
model.py

from multiselectfield import MultiSelectField
# ...
MY_CHOICES = (('item_key1', 'Item title 1.1'),
              ('item_key2', 'Item title 1.2'),
              ('item_key3', 'Item title 1.3'),
              ('item_key4', 'Item title 1.4'),
              ('item_key5', 'Item title 1.5'))
MY_CHOICES2 = ((1, 'Item title 2.1'),
               (2, 'Item title 2.2'),
               (3, 'Item title 2.3'),
               (4, 'Item title 2.4'),
               (5, 'Item title 2.5'))
class MyModel(models.Model):
    my_field = MultiSelectField(choices=MY_CHOICES)
    my_field2 = MultiSelectField(choices=MY_CHOICES2, max_choices=3, max_length=3)

模板中使用:

{%  for  value ,  text  in  form.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" {%  endif  %} > 
    < label > {{  text  }} </ label > 
  </ div > 
{%  endfor  %}

admin管理中的样式如下可多选

在视图中如何调用呢?

类名.objects.filter(字段__contains='TaskCalibration').values()
<QuerySet [{}]>
    color = EnumField ( Color , max_length = 1 )
 m = MyModel . objects . filter ( color = Color . RED )
 EnumIntegerField工作原理相同,但是基础存储机
                                    django-multiselectfield
  一个新的模型字段和表单字段。 有了这个,您可以从选项中选择多项。 以逗号分隔值的CharField形式存储到数据库中。
 这个鸡蛋是受此启发的。
 支持的Python版本:2.7、3.4+
 支持的Django版本:1.4-2.0 +
用pip安装
$ pip install django-multiselectfield
配置您的models.py
 from multiselectfield import MultiSelectField
# ...
MY_CHOICES = (( 'item_key1' , 'Item title 1.1' ),
              ( 'item_key2' , 'Item title 1.2' ),
              ( 'item_key3' , 'Item title
                                    随着Django的不断发展,现在已经到了4.1版本。但是网上的资料大多数都是2.X版本的资料,很少涉及到新特性的使用案例,那么django的这些新特性,大家都在项目中使用到了吗?
                                    本文参考:https://blog.csdn.net/lzw2016/article/details/81546311
有需要请阅读其原文介绍choice的使用,和在模板中的使用。
今天在开发中遇到将枚举字段反系列化,终于找到答案。
在django中设置模型如下的枚举字段
from django.contrib.auth.models import AbstractUser
class ...
                                    本文介绍Django开发中通过model创建MYSQL数据库中包含ENUM枚举类型字段的表,方法如下:from django.db import modelsclass EnumField(models.Field):def __init__(self, *args, **kwargs):super(EnumField, self).__init__(*args, **kwargs)assert ...
                                    4、在子应用的目录下新建一个 python 包 templatetags 用于书写过滤器 mysecondfilter.py。6、在根目录下新建一个文件夹 templates 编写htmll 文件 message.html。2、创建一个子应用 index,并在 setting.py 中注册子应用。3、创建子应用的路由 urls.py,在根路由中引入子路由。5、新建一个违禁过滤词库 和枚举的类 consts.py。3、创建视图函数 views.py。
                                    Django的ORM模块是框架特色功能之一,它把数据表与Python类对应、表字段与类属性对应、类实例与数据记录对应,并将对类实例的操作映射到数据库中。开发者不再需要写SQL代码,可以更加专注地完成业务逻辑,极大地提高了开发效率。本章将围绕post应用首先创建应用需要的Models,之后介绍ORM API的使用方法,最后剖析ORM的实现原理。学会使用框架提供的功能是必要的,同时理解其实现原理往往会事半功倍。
4.1 构建post应用需要的数据表
4.1.1 post应用的Models定义
post应用
Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架
到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞:
创建数据库,设计表结构和字段
使用 MySQLdb 来连接数据库,并编写数据访问层代码
业务逻辑层去调用数据访问层执行数据库操作
ORM是什么?:(在django中,根据代码中的类自动生成数据库的表也叫–code first)
ORM:Object Relational Mapping(关系对象映射)
类名对应------》数据库中的表名
类属性对应-
                                    离线安装django
django 3依赖以下几个第三方组件 sqlparsepytz,asgiref
在离线安装django建议先进行安装对应三个组件,执行完成完再进行django安装
django 创建项目
cd 到一个你想放置你代码的目录执行
django-admin startproject 项目名称
Django会生成一个符合Django项目标准的web项目结构的文件包,标准的Django项目主要包含两个部分:管理项目的命令行工具
manage.py ;项目实际所在的包,以项目名称命名的pytho
                                    一.枚举类型示例 
 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。Python 的原生类型(Built-in types)里并没有专门的枚举类型,但是我们可以通过很多方法来实现它,例如字典、类等:  WEEKDAY = {         'MON': 1,         'TUS': 2,         'WEN': 3,    ...
                                    # 【1】 字段
# AutoField() 自增类型,通常用在id上,诺不指定,逐渐id会自动添加在模型中
# CharField(max_length=?) 字符类型,必须给最大长度,默认的表单样式是Text Input
# TextField()  大文本类型,>4000使用,默认表单空间是Textarea
# IntegerField() 整数类型
# FloatField()  浮...
                                    django复选MultiSelectField的使用一:安装二:使用场景
MultiSelectField介绍: https://pypi.org/project/django-multiselectfield/
pip install django-multiselectfield
二:使用场景
在django ORM的使用中,经常会出现选择的情况,例如:
class person...
                                    我有一个Django应用程序,想要在用户的个人资料中显示多个选择复选框。 然后,他们将能够选择多个项目。这是我的models.py的简化版本:from profiles.choices import SAMPLE_CHOICESclass Profile(models.Model):user = models.ForeignKey(User, unique=True, verbose_name_(...
                                    版权归作者所有,任何形式转载请联系作者。作者:petanne(来自豆瓣)来源:https://www.douban.com/note/301166150/1.多表连接查询:感觉django太NX了。class A(models.Model):name = models.CharField(u'名称')class B(models.Model):aa = models.ForeignKey(A)B....
                                    1、 在eclipse中安装配置 svn资源库2.点击"Add",在弹出的窗口里,输入对应的SVN地址,然后"OK"http://subclipse.tigris.org/update_1.8.x3.将上图中将2个都选中,然后一路点Next,就可以了4、安装好后,重启eclipse,就可以看到svn视图了, 添加资源库地址5、删除本地项...
                                    说明: 感谢飞天色鼠和javaeye论坛的sp2,其实是改了飞天色鼠的代码。sp2给了很大帮助,感谢! 演示效果:  调用代码如下: var auto_field=new Ext.form.MultiSelectField();if(contextlist==null){    auto_field.contextArray=    [      [1,一],     
                                    本文实例讲述了Django框架多表查询。分享给大家供大家参考,具体如下:多表查询是模型层的重要功能之一, Django提供了一套基于关联字段独特的解决方案.ForeignKey来自Django官方文档的模型示例:from django.db import modelsclass Blog(models.Model):name = models.CharField(max_length=100)ta...