6.7-Django-笔记--ORM解释--未完!
来源:互联网 发布:华为云计算平台 编辑:程序博客网 时间:2024/06/05 07:19
orm
整篇文章参考的地址
1. 数据库模型层使用了大量的 ORM(对象关系映射),解释ORM
Django和其他大多数现代Web框架一样,依赖一个强大的DAO,数据访问层,试图将底层的关系数据库和Python的面向对象的特质联系起来,使用ORM的几点好处:封装有用的方法,可移植性,安全性,表现力
安全性上:避免了SQL注入攻击???
2. Django丰富的变量类型
Django模型定义的方式如下
from django.db import modelsclass Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author) length = models.IntergerField()
- 用Python的类来表示对象,而对象则通常映射到SQL中的表,属性对应列,并且这些属性本身也是对象, 对象属性是 Field 类的子类;这些子类通常还会定义一定程度的抽象,
CharField/TextField -- 都是用于保存文本,区别在于一个定长,一个无限长EmailField/URLField/IPAddressField -- 就是CharField加上验证功能BooleanField/NullBooleanFieldFileField/FilePathField -- FileField只在数据库中保存了一个文件的路径,和它接近的FileFieldPath
4. 主键的功能,没有明确指定,Django会自动生成主键 id(AutoField,自增整数),你希望有更多的控制主键,只需要在某个变量上指定 primary_key = True,这个变量会取代 id 成为这个表的主键
5.ForeignKey设置外键的方式,一对多的方式
正面定义的方式
class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey("Author")class Author(models.Model): name = models.CharField(max_length=100)
反向,根据关系追溯回来,因为这是一种多对一的关系,多个子对象可以引用同一个父对象,而父对象可以访问到一组子对象。
#取一本书“Moby Dick”book = Book.objects.get(title="Moby Dick")#取作者名字author = Book.author#获取这个作者所有的书books = author.book_set.all()
6.多对多的方式(ManyToManyField),一个作者有多本书,一本书也有多个作者,由于SQL没有定义这种关系,必须通过外键用它能理解的方式实现多对多,Django提供了第二种关系对象映射变量 ManyToManyField,指定一个特殊的选项 through 来指向一个显式的中间模型类,更方便你的手动管理关系的两端,ManyToManyField的秘密在于它在背后创建了一张新的表来满足这类关系的查询的需要,而这张表用的则是SQL外键,其中每一行都代表了两个对象的一个关系,同时包含了两端的外键
class Author(models.Model): name = models.CharField(max_length=100)class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author, through = "Authoring")class Authoring(models.Model): collaboration_type = models.CharField(max_length=100) book = model.ForeignKey(Book) author = model.ForeignKey(Author)
阅读全文
0 0
- 6.7-Django-笔记--ORM解释--未完!
- django orm
- django ORM
- Django ORM
- Django学习笔记1 [路由机制,数据库orm,模板语言]
- Django 开发学习笔记(4)- 关于数据 ORM
- Django框架学习笔记(9.ORM基本操作)
- [Django]外部调用django orm
- Django ORM涉阶(一)
- Django ORM涉阶(二)
- django orm总结
- 深入django :自定义ORM
- django orm排序
- django orm总结
- django orm操作练习
- django orm总结
- Django orm总结
- Django-ORM(一)
- Matlab代码转C++—— mwArray
- Tomcat环境变量配置
- Check failed: axis_index < num_axes() (1 vs. 1) axis 1 out of range for 1-D Blob with shape
- Ubuntu下SSH安装或设置
- 百度地图1,2,3面
- 6.7-Django-笔记--ORM解释--未完!
- 如何将flash中的程序搬到ram中执行
- jQuery异步请求
- Mysql 服务 在服务列表里丢失解决办法
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- swift3.0项目Cocoapods导入的库头文件在Bridging-Header.h中导入报错
- linux定时任务管理cron设置
- JVM-内存管理及创建对象
- SSH问题:系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常