什么是ORM
Object Relation Mapping 即对象关系映射。实现对象模型到关系模型的双向转换。
python | mysql |
---|---|
对象模型 | 关系模型 |
模型类 | 数据库的二维表 |
模型类的对象 | 表中的一条记录 |
使用ORM
通过表自动生成模型
python manage.py inspectdb > polls/models.py
记得在APPS里添加项目名字
进入Django的编译器
python manage.py shell
然后即可在Django的编译器中以操作对象的方式操作关系数据库
- 导入想操作的类
>>> from polls.models import Subject
添加对象| 修改对象
.save() 后才算写入了数据库
>>> subject1=Subject(name='大数据',intro='这是一个介绍',is_hot=1)
>>> subject1.name = ('java大数据+人工智能')
>>> subject1.save()
拿所有对象 (all)
>>> q = Subject.objects.all()
>>> for subject in q:
... print(subject.no, subject.name)
拿具体某个对象( get)
>>> subject = Subject.objects.get(no=1)
>>> subject.name
'Python全栈+人工智能'
>>> subject.is_hot
1
根据条件查询( filter)
>>> Subject.objects.filter(is_hot=0)
Django模板过滤器语法
# yesno过滤器
<span>性别:{{ teacher.sex | yesno:'男,女' }}</span>
# 时间日期过滤器
<span>出生日期:{{ teacher.birth | date:'Y年n月j日' }}</span>
only 和 defer
# only 只查哪些字段
subject = Subject.objects.only('name', 'is_hot').get(no=sno)
# defer 不查哪些字段
queryset = Teacher.objects.defer('subject').filter(subject__no=sno)