阅读简要

首先我们要明白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的区别的更多相关文章

  1. python django(forms组件)

    forms组件最大的作用,就是做数据校验. 普通做法,一个一个写校验规则,没有解耦.校验规则,都在视图函数里面. 网页校验 修改urls.py,增加路径addbook from app01 impor ...

  2. Django forms组件与钩子函数

    目录 一.多对多的三种创建方式 1. 全自动 2. 纯手撸(了解) 3. 半自动(强烈推荐) 二.forms组件 1. 如何使用forms组件 2. 使用forms组件校验数据 3. 使用forms组 ...

  3. django ---forms组件

    forms组件 本文目录 1 校验字段功能 2 渲染标签功能 3 渲染错误信息功能 4 组件的参数配置 5 局部钩子 6 全局钩子 回到目录 1 校验字段功能 针对一个实例:注册用户讲解. 模型:mo ...

  4. Django forms组件的校验

    引入: from django import forms 使用方法:定义规则,例: class UserForm(forms.Form): name=forms.CharField(max_lengt ...

  5. Django学习之八:forms组件【对form舒心了】

    目录 Django forms组件 bound and unbound form instance forms渲染有关 隐藏一个字段,不渲染它 form 校验 form类 ModelForm 利用Mo ...

  6. python 全栈开发,Day78(Django组件-forms组件)

    一.Django组件-forms组件 forms组件 django中的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显 ...

  7. 08 Django组件-Forms组件

    Django的Forms组件主要有以下几大功能: 页面初始化,生成HTML标签 校验用户数据(显示错误信息) HTML Form提交保留上次提交数据 一.小试牛刀 1.定义Form类 from dja ...

  8. Django组件-Forms组件

    Django的Forms组件主要有以下几大功能: 页面初始化,生成HTML标签 校验用户数据(显示错误信息) HTML Form提交保留上次提交数据 一.小试牛刀 1.定义Form类 from dja ...

  9. Django组件——forms组件

    一.校验字段功能 通过注册用户这个实例来学习校验字段功能. 1.模型:models.py from django.db import models # Create your models here. ...

随机推荐

  1. day 23 面向对象中类的成员 和嵌套

    1.类的成员? 变量.方法.属性 class Foo: # 方法 def __init__(self,name): # 实例变量/字段 self.name = name # 方法 def func(s ...

  2. 解析深度学习 语音识别实践 pdf下载

    链接:https://pan.baidu.com/s/1jd8_2nbz6M9e20lI3JdVGA  密码:1ikc 我从别人那里买的!可以友情赞助资瓷!

  3. 经典sql面试题(学生表_课程表_成绩表_教师表)

    转载:https://www.cnblogs.com/qixuejia/p/3637735.html 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cna ...

  4. PHP页面跳转传值的三种常见方式

    一. POST传值 post传值是用于html的<form>表单跳转的方法,很方便使用.例如: ? 1 2 3 4 5 6 7  <html>  <form action ...

  5. 基于SpringBoot+Netty实现一个自己的推送服务系统

    目标 实现一个WebSocket服务中心,支持水平扩展 技术栈 SpringBoot.Netty.JDK8.MySQL.Redis.RabbitMQ.MyBatis-Plus 环境搭建 主要功能点说明 ...

  6. Spring Boot 最简单整合Shiro+JWT方式

    简介 目前RESTful大多都采用JWT来做授权校验,在Spring Boot 中可以采用Shiro和JWT来做简单的权限以及认证验证,在和Spring Boot集成的过程中碰到了不少坑.便结合自身以 ...

  7. 鲲鹏性能优化十板斧(二)——CPU与内存子系统性能调优

    1.1 CPU与内存子系统性能调优简介 调优思路 性能优化的思路如下: l   如果CPU的利用率不高,说明资源没有充分利用,可以通过工具(如strace)查看应用程序阻塞在哪里,一般为磁盘,网络或应 ...

  8. 在华为云ECS上手工通过Docker部署tomcat

    本文介绍了如何在华为云上ECS上手工通过Docker部署tomcat,并提供了Docker常用操作 一.环境准备 ECS:操作系统版本:    CentOS Linux release 7.6.181 ...

  9. 转:logback的使用和logback.xml详解

    一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两 ...

  10. pop 与 popitem

    pop给出一个键弹出值 popitem弹出一个项 >>> a.pop(2)'two'>>> a{1: 'one', 3: 'three', 4: 'four'}&g ...