Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式
图书管理系统笔记
redirect括号内可以直接写url
也可以直接写别名
但如果别名需要参数,必须使用reverse解析。
choices用法
使用场景:能列举完全的数据
#使用方法:xxx_choice
#1. get.xxx_display
#2. 如果超出范围,则显示原来的数据,如3,4
#3. 字段类型保证和列举类型一致
#类似枚举
class UserInfo(model.Model):name = models.CharField()addr_choice = ((1, "北京"),(2, "上海"),)addr = models.IntegerField(choice=addr_choice)#调用
print(obj.get_addr_display())#字符型,应该使用CharField()score_choice = (('A', '优秀'),('B', '良好'),)
MTV与MVC模型
#MTV: django号称是MVC模型
M: models
T: templates
V: views
#MVC: 其实django本质也是MVC
M: models
V: views
C: controller
多对多三种创建方式
全自动:利用ORM创建第三张关系表
优点:代码不需要写,支持orm操作第三张表
缺点:扩展性不足
class Book(models.Model):name = models.CharField(max_length=32)authors = models.ManyToManyField(to='Author')
纯手动
优点:扩展性高
缺点: 手写代码,不能使用orm提供的操作方法
class Book(models.Model):name = models.CharField(max_length=32)class Author(models.Model):name = models.CharField(max_length=32)class Book2Author(models.Model):book = models.ForeignKey(to='Book')author = models.ForeignKey(to='Author')info = models.CharField(max_length=32)
半自动
优点:扩展性高,orm有提供操作
缺点:代码多。没法使用add.set.remove.clear 四个方法
class Book(models.Model):name = models.CharField(max_length=32)# through_fields顺序,当前表是谁就谁在前面# through_fields以防第三张表有其他字段authors = models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author')) class Author(models.Model):name = models.CharField(max_length=32)class Book2Author(models.Model):book = models.ForeignKey(to='Book')author = models.ForeignKey(to='Author')info = models.CharField(max_length=32)
总结:为了拓展性高,一般使用半自动
。。。。写代码为自己留后路
Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式相关推荐
- Django 数据库查询优化,choices参数(数据库字段设计常见),MVC和MTV模型,多对多三种创建方式...
数据库查询优化 orm语句的特点:惰性查询 如果仅仅只是书写了orm语句,在后面没有用到该语句所查询出来的参数,那么orm会自动识别,并不执行 举例: res = models.Book.object ...
- Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)
阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...
- 学习笔记 --- 编码过程中常见的三种异步方式
实际的编码过程中, 凡是涉及到网络通信的代码, 异步都是决不可缺少的. 那么什么是异步呢? 异步就是子线程, 异步通过开辟子线程来实现, 所以一提到异步就应该想到子线程. 即使不涉及网络通信, 异步也 ...
- 数字图像处理学习笔记(七)——用Pycharm及MATLAB实现三种图像内插法(最近邻内插法、双线性内插法、双三次内插法)
数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...
- MTV和MVC模型和创建Django项目
MVC与MTV模型 MVC模型 MVC,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller),他们之间以一种插件式的.松耦合 ...
- python 学习笔记(基础输入输出,字符串,循环,三种数组)
学习python发现这门语言和其他语言有很多不同之处,比如python的变量不需要要声明类型,python是解释性语言所以要注意函数定义的位置,python注重代码格式而不注重符号.python方便得 ...
- 笔记连载 | Day6 FPGA三种建模方式区别及Verilog语法基础篇
听说99%的同学都来这里充电吖 本系列为线下学员学习笔记整理分享,如有想要报名参加线下培训,可以点击以下超链接文章了解,购买开发板可以到叁芯智能科技企业淘宝店下单. 各类研修班 | FPGA就业研修班 ...
- SSH+Mysql实现的作业批改管理系统(功能包含分学生、教师、管理员三种角色登录,作业上传、给老师留言、学习内容下载、作业评分、给学生留言、教师学生管理、公告管理、学习资源管理、作业管理等)
博客目录 SSH+Mysql实现的作业批改管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSH+Mysql实现的作业批改管理系统 本系统是一个作业批改管理系统系统,分为三个角色:学生.教 ...
- HTML学习笔记16——尺寸的表示_px、%、em三种
1.像素表示: 23px 2.子像素可以用百分比表示其大小,如50%,表示为父元素的一半 如果块状子元素的宽度不指定,默认是占满父元素的宽度: 3.用em表示字体大小时,表示相对大小,是与父元素的比 ...
最新文章
- Eclipse使用Tomcat发布项目时出现YadisException异常解决方案
- Enterprise Architect 中文经典教程
- c语言实验七实验报告,C语言实验七 数 实验报告.doc
- python增删改查的框架_python的Web框架,Django的ORM,模型基础,MySQL连接配置及增删改查...
- spring WebSocket详解
- AC日记——Paint Pearls hdu 5009
- Hibernate的CRUD
- java IO 超详细讲解
- er图一对多的关系怎么体现_抠图高级技法之混合剪切篇
- AD9371+ZYNQ结构中JESD204B IP核的AXI_STREAM接口数据结构
- java毕业设计网上教学系统mybatis+源码+调试部署+系统+数据库+lw
- win10 企业版激活
- 机器学习--PCA(主成分分析)
- 安装红蜘蛛软件6.2教师机管理端后,无法显示学生机的解决方法
- 1068 万绿丛中一点红 (20分)测试点分析
- Bumped Map And Normal Map
- 计算机开机总要按f1键,详解Win7系统电脑开机需要按F1键才能启动的解决方法
- 微信小程序信息授权获取(头像,昵称,等)
- jxl实现写入excel模板及导出(带图片)
- 网络精准营销方式包括哪些