阅读简要

首先我们要明白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. 扛把子 选题 Scrum立会报告+燃尽图 03

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8680 一.小组情况组长:迟俊文组员:宋晓丽 梁梦瑶 韩昊 刘信鹏队名:扛 ...

  2. HTTP基础及telnet简单命令

    一.HTTP概况 20世纪90年代初期,一个主要的新兴应用即万维网(World Wide Web)登上了舞台.Web是一个引起公众注意的因特网应用.Web的应用层协议是超文本传输协议(HTTP),它是 ...

  3. 【论文阅读】Diverse Image-to-Image Translation via Disentangled Representations(ECCV2018 oral)

    目录 相关链接 方法亮点 相关工作 方法细节 实验结果 总结与收获 参考文献 相关链接: 论文:https://arxiv.org/abs/1808.00948 代码:https://github.c ...

  4. python核心编程笔记(转)

    解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗 ...

  5. Fortran数组、函数--xdd

    1.数组的声明 integer,parameter::num= integer::student(num) 或者 integer a() 或者 integer a(,) student()= !第一个 ...

  6. Git之GitFlow工作流

    一. GitFlow 介绍 1.1 什么是 GitFlow GitFlow 是一种 Git 工作流,它是团队成员遵守的一种代码管理方案 . 1.2 GitFlow 常用分支说明 分支名称 分支说明 P ...

  7. Git实战指南----跟着haibiscuit学Git(第五篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  8. 程序员的算法课(14)-Hash算法-对海量url判重

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...

  9. python_爬虫

    1.网络爬虫    1.定义:网络蜘蛛,网络机器人,抓取网络数据的程序    2.总结:用Python程序去模仿人去访问网站,模仿的越逼真越好    3.目的:通过有效的大量的数据分析市场走势,公司的 ...

  10. Reachability的用法 判断用户的网络状态

    - (void)viewDidLoad { [super viewDidLoad]; // 监听网络状态发生改变的通知 [[NSNotificationCenter defaultCenter] ad ...