知识点一:
Django的ORM:
O : Object 代表对象(类)
R : Relastions 代表关系,关系数据库里的表
M : Mapping: 映射
总结: ORM就是对 类和数据库种的表进行关系映射。
知识点二:
models.py 下面配置数据模型类:
1 # 操作位置: models.py 2 3 from django.db import models 4 5 class model_name(models.Model): # 模块名,相当于对应的数据表名字 (继承于models.Model) 6 7 mobile = models.CharField(max_length=11) # mobile相当于数据表的字段,XXXXFidle 相当于数据的类型,max_length 数据长度 8 9 DataConfirmations = models.ForeignKey("Confirmations") # 资料确认 一对多 关联 Confirmations分类的表
知识点三:
1、数据库模型类 同步 到数据库:
先 cd 进入 manage.py 所在的那个文件夹下,输入下面的命令 # Django 1.6.x 及以下 python manage.py syncdb # Django 1.7 及以上的版本需要用以下命令 python manage.py makemigrations python manage.py migrate
2、使用数据库:
新建一个对象的方法有以下几种: Person.objects.create(name=name,age=age) p = Person(name="WZ", age=23) p.save() p = Person(name="TWZ") p.age = 23 p.save() Person.objects.get_or_create(name="WZT", age=23) # 这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象,第二个为True或False, 新建时返回的是True, 已经存在时返回False. # 获取对象有以下方法: Person.objects.all() Person.objects.all()[:10] # 切片操作,获取10个人,不支持负索引,切片可以节约内存 Person.objects.get(name=name) # get是用来获取一个对象的,如果需要获取满足条件的一些人,就要用到filter Person.objects.filter(name="abc") # 等于Person.objects.filter(name__exact="abc") # 名称严格等于 "abc" 的人 Person.objects.filter(name__iexact="abc") # 名称为 abc 但是不区分大小写,可以找到 ABC, Abc, aBC,这些都符合条件 Person.objects.filter(name__contains="abc") # 名称中包含 "abc"的人 Person.objects.filter(name__icontains="abc") #名称中包含 "abc",且abc不区分大小写 Person.objects.filter(name__regex="^abc") # 正则表达式查询 Person.objects.filter(name__iregex="^abc") # 正则表达式不区分大小写 # filter是找出满足条件的,当然也有排除符合某条件的 Person.objects.exclude(name__contains="WZ") # 排除包含 WZ 的Person对象 Person.objects.filter(name__contains="abc").exclude(age=23) # 找出名称含有abc, 但是排除年龄是23岁的