Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField的区别
阅读简要
首先我们要明白Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField是继承关系

ChoiceField
1. Django forms组件中ChoiceField字段是对models里choice的渲染 2. choices作用:在数据库中用元组的第一项作为存储的值,在显示时,将元组的第二项作为显示的内容,便于前端使用下拉框 3. 用get_xxxx_display()显示第二项的值

class Authors(models.Model):
name = models.CharField("姓名", max_length=32)
gender = models.SmallIntegerField(choices=((1, "男"), (2, "女")), default=1)
ModelChoiceField
1. Django forms组件中ModelChoiceField字段是对models里Forekey的渲染 2. 在前端渲染为下拉菜单

class Book(models.Model):
title = models.CharField("书名", max_length=32)
publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE, verbose_name="出版社")
ModelMutipleChoiceField
1. Django forms组件中ModelMutipleChoiceField字段是对models里ManyToManyField的渲染
2. 在前端渲染为多选菜单

models.py
class Authors(models.Model):
name = models.CharField("姓名", max_length=32)
age = models.IntegerField("年龄")
gender = models.SmallIntegerField(choices=((1, "男"), (2, "女")), default=1) def __str__(self):
return self.name class Book(models.Model):
title = models.CharField("书名", max_length=32)
publish_time = models.DateField()
publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE, verbose_name="出版社")
authors = models.ManyToManyField(to="Authors") def __str__(self):
return self.title class Publish(models.Model):
name = models.CharField("出版社名", max_length=32)
address = models.CharField("地址", max_length=32) def __str__(self):
return self.name
forms.py
from django import forms class AuthorForm(forms.Form):
name = forms.CharField(label="姓名", max_length=32)
age = forms.IntegerField(label="年龄")
gender = forms.ChoiceField(choices=((1, "男"), (2, "女"))) class BookForm(forms.Form):
title = forms.CharField(label="书名", max_length=32)
publish_time = forms.DateField(label="发行时间")
publish = forms.ModelChoiceField(label="出版社", queryset=Publish.objects.all())
authors = forms.ModelMultipleChoiceField(label="作者", queryset=Authors.objects.all())
别忘记点赞哦! ~.~
Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField的区别的更多相关文章
- python django(forms组件)
forms组件最大的作用,就是做数据校验. 普通做法,一个一个写校验规则,没有解耦.校验规则,都在视图函数里面. 网页校验 修改urls.py,增加路径addbook from app01 impor ...
- Django forms组件与钩子函数
目录 一.多对多的三种创建方式 1. 全自动 2. 纯手撸(了解) 3. 半自动(强烈推荐) 二.forms组件 1. 如何使用forms组件 2. 使用forms组件校验数据 3. 使用forms组 ...
- django ---forms组件
forms组件 本文目录 1 校验字段功能 2 渲染标签功能 3 渲染错误信息功能 4 组件的参数配置 5 局部钩子 6 全局钩子 回到目录 1 校验字段功能 针对一个实例:注册用户讲解. 模型:mo ...
- Django forms组件的校验
引入: from django import forms 使用方法:定义规则,例: class UserForm(forms.Form): name=forms.CharField(max_lengt ...
- Django学习之八:forms组件【对form舒心了】
目录 Django forms组件 bound and unbound form instance forms渲染有关 隐藏一个字段,不渲染它 form 校验 form类 ModelForm 利用Mo ...
- python 全栈开发,Day78(Django组件-forms组件)
一.Django组件-forms组件 forms组件 django中的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显 ...
- 08 Django组件-Forms组件
Django的Forms组件主要有以下几大功能: 页面初始化,生成HTML标签 校验用户数据(显示错误信息) HTML Form提交保留上次提交数据 一.小试牛刀 1.定义Form类 from dja ...
- Django组件-Forms组件
Django的Forms组件主要有以下几大功能: 页面初始化,生成HTML标签 校验用户数据(显示错误信息) HTML Form提交保留上次提交数据 一.小试牛刀 1.定义Form类 from dja ...
- Django组件——forms组件
一.校验字段功能 通过注册用户这个实例来学习校验字段功能. 1.模型:models.py from django.db import models # Create your models here. ...
随机推荐
- 20191010-3 alpha week 1/2 Scrum立会报告+燃尽图 01
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/8746 一.小组情况 组长:迟俊文 组员:宋晓丽 梁梦瑶 韩昊 刘信鹏 队名 ...
- call() 、 apply() 、bind()方法的作用和区别!
从一开始,我是在书上看到关于bind().call() 和 apply(), 不过长久以来,在工作中与网上接触到了很多关于这三个方法的使用场景,对这三个方法也算是比较熟悉了.所以把他们的作用和区别简单 ...
- 关于JDK源码:我想聊聊如何更高效地阅读
简介 大家好,我是彤哥,今天我想和大家再聊聊JDK源码的几个问题: 为什么要看JDK源码 JDK源码的阅读顺序 JDK源码的阅读方法 为什么要看JDK源码 一,JDK源码是其它所有源码的基础,看懂了J ...
- 2019-9-20:渗透测试,基础学习,笔记,metasploit的基础使用
使用kali下metasploit生成木马,控制windows系统 kali基于debin的数字取证系统,上面集成了很多渗透测试工具,前身为bt r3(BrackTrack) Metasploit,是 ...
- linux 相关零碎知识整理
1.启动bash shell 大部分linux系统启动用户命令行接口(cli)环境时使用默认的bash shell,在bash shell启动时,它将自动执行位于用户主目录下的.bashrc中的命令. ...
- pymongo的基本操作和使用--练习
1.将MongoDB注册到电脑中 安装好MongoDB之后,如何使用MongoDB呢?来到安装目录D:/MongoDB/bin会有如下列表: 其中,mongod.exe是服务端,mongo.exe是客 ...
- kube-apiserver 集群服务安装
目录 创建 kube-apiserver 证书 生成证书和私钥 创建加密配置文件 创建审计策略文件 分发 kube-apiserver 二进制文件 创建后续访问 metrics-server 使用的证 ...
- 《Windows内核安全与驱动开发》 3.2 内存与链表
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 3.2 内存与链表 1. 尝试生成一个链表头并将其初始化. 2. 尝试向内存 ...
- js杂项积累
主要内容: 一 浏览器重定向Http请求跨域 二 html select标签 可以设置属性multipe,变为多选 三 document.wirte只应在script标签的顶层代码中使用.不能放在函数 ...
- 一文读懂Python web框架和web服务器之间的关系
我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...