图书管理系统笔记

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模型/多对多三种创建方式相关推荐

  1. Django 数据库查询优化,choices参数(数据库字段设计常见),MVC和MTV模型,多对多三种创建方式...

    数据库查询优化 orm语句的特点:惰性查询 如果仅仅只是书写了orm语句,在后面没有用到该语句所查询出来的参数,那么orm会自动识别,并不执行 举例: res = models.Book.object ...

  2. Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...

  3. 学习笔记 --- 编码过程中常见的三种异步方式

    实际的编码过程中, 凡是涉及到网络通信的代码, 异步都是决不可缺少的. 那么什么是异步呢? 异步就是子线程, 异步通过开辟子线程来实现, 所以一提到异步就应该想到子线程. 即使不涉及网络通信, 异步也 ...

  4. 数字图像处理学习笔记(七)——用Pycharm及MATLAB实现三种图像内插法(最近邻内插法、双线性内插法、双三次内插法)

    数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...

  5. MTV和MVC模型和创建Django项目

    MVC与MTV模型 MVC模型 MVC,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller),他们之间以一种插件式的.松耦合 ...

  6. python 学习笔记(基础输入输出,字符串,循环,三种数组)

    学习python发现这门语言和其他语言有很多不同之处,比如python的变量不需要要声明类型,python是解释性语言所以要注意函数定义的位置,python注重代码格式而不注重符号.python方便得 ...

  7. 笔记连载 | Day6 FPGA三种建模方式区别及Verilog语法基础篇

    听说99%的同学都来这里充电吖 本系列为线下学员学习笔记整理分享,如有想要报名参加线下培训,可以点击以下超链接文章了解,购买开发板可以到叁芯智能科技企业淘宝店下单. 各类研修班 | FPGA就业研修班 ...

  8. SSH+Mysql实现的作业批改管理系统(功能包含分学生、教师、管理员三种角色登录,作业上传、给老师留言、学习内容下载、作业评分、给学生留言、教师学生管理、公告管理、学习资源管理、作业管理等)

    博客目录 SSH+Mysql实现的作业批改管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSH+Mysql实现的作业批改管理系统 本系统是一个作业批改管理系统系统,分为三个角色:学生.教 ...

  9. HTML学习笔记16——尺寸的表示_px、%、em三种

    1.像素表示:  23px 2.子像素可以用百分比表示其大小,如50%,表示为父元素的一半 如果块状子元素的宽度不指定,默认是占满父元素的宽度: 3.用em表示字体大小时,表示相对大小,是与父元素的比 ...

最新文章

  1. Eclipse使用Tomcat发布项目时出现YadisException异常解决方案
  2. Enterprise Architect 中文经典教程
  3. c语言实验七实验报告,C语言实验七 数 实验报告.doc
  4. python增删改查的框架_python的Web框架,Django的ORM,模型基础,MySQL连接配置及增删改查...
  5. spring WebSocket详解
  6. AC日记——Paint Pearls hdu 5009
  7. Hibernate的CRUD
  8. java IO 超详细讲解
  9. er图一对多的关系怎么体现_抠图高级技法之混合剪切篇
  10. AD9371+ZYNQ结构中JESD204B IP核的AXI_STREAM接口数据结构
  11. java毕业设计网上教学系统mybatis+源码+调试部署+系统+数据库+lw
  12. win10 企业版激活
  13. 机器学习--PCA(主成分分析)
  14. 安装红蜘蛛软件6.2教师机管理端后,无法显示学生机的解决方法
  15. 1068 万绿丛中一点红 (20分)测试点分析
  16. Bumped Map And Normal Map
  17. 计算机开机总要按f1键,详解Win7系统电脑开机需要按F1键才能启动的解决方法
  18. 微信小程序信息授权获取(头像,昵称,等)
  19. jxl实现写入excel模板及导出(带图片)
  20. 网络精准营销方式包括哪些

热门文章

  1. [收藏]REST -维基百科
  2. Windows Server 2012 DHCP 服务器中的新功能:故障转移和策略
  3. 如何改变X:\Users\XXX的用户名称
  4. 聚类算法学习指南(二)
  5. google code for xbmc addons2
  6. .Net Crank性能测试入门
  7. 十个现象,识别程序员的“水份”
  8. 分布式数据库一定会替代Oracle吗?
  9. 开源许可证的变更带给我们什么启示?
  10. .NET 云原生架构师训练营(模块二 基础巩固 依赖注入)--学习笔记