django之models学习总结
Posted 506941763lcj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django之models学习总结相关的知识,希望对你有一定的参考价值。
from django.db import models # Create your models here. class Classes(models.Model): ‘‘‘ 班级表 ‘‘‘ title=models.CharField(max_length=32) m=models.ManyToManyField(‘Teachers‘) ‘‘‘ obj=models.Classes.objects.filter(id=1).first() obj.m.add(1) 代表创建班级id=1 老师Id=1数据对象 obj.m.add(2) 代表创建班级id=1 老师Id=2数据对象 obj=models.Classes.objects.filter(id=2).first() obj.m.add(1) 代表创建班级id=2 老师Id=1数据对象 obj.m.add(2) 代表创建班级id=2 老师Id=2数据对象 obj.m.add([2,3]) 代表创建班级id=2 老师id=2 id=3数据对象 ‘‘‘ class Teachers(models.Model): ‘‘‘ 老师表 ‘‘‘ ‘‘‘-----------单表----------------- 每个数据对象在数据库中会有一列自增的ID 一、创建数据对象(增) 创建数据对象的两种方法 1.models.Teachers.objects.create(name=‘xx‘) 2.obj=Teachers(name=‘xx‘) obj.save() 二、获取数据对象(查) models.Teachers.objects.all() //获取所有对象 models.Teachers.objects.filter(id=1)//获取某个对象 models.Teachers.objects.filter(id=1,name=‘xx‘) models.Teachers.objects.filter(id__gt=1)//获取ID大于等于1的对象 models.Teachers.objects.filter(id__gt=1).first()//获取ID大于等于1的对象中的第一个 models.Teachers.objects.all()[:10] 切片操作,获取10个人,不支持负索引,切片可以节约内存 三、删除数据对象(删) models.objects.Teachers.filter(id=1).delete()//删除ID=1对象 四、修改数据对象 models.Teachers.objects.all().update(name=‘xx‘) models.Teachers.objects.filter(id=1).update(name=‘xx‘)//有过滤条件的修改 ‘‘‘ name=models.CharField(max_length=32) class Student(models.Model): ‘‘‘ 学生表 ‘‘‘ username=models.CharField(max_length=32) age=models.IntegerField() gender=models.BooleanField() cs=models.ForeignKey(Classes,on_delete=models.CASCADE) #ForeignKey约束的对象在数据库中会自带下划线__id,此处的cs 里面包含id 和title ‘‘‘ 学生对象在数据库中右5列标识 id username age gender cs__id 1.创建数据对象(增) models.Students.objects.create(username=‘xx‘,age=20,gender=‘男‘,cs__id=1) models.Students.objects.create(username=‘xx‘,age=20,gender=‘男‘,cs=models.Class.objects.filter(id=1).first()) 班级: Id title 1 软件工程 2 嵌入式班 3 大数据班 Students类中的cs代表是班级里的一行数据:如:1 软件工程(即:id和title),若要取班级的中ID或title中的一项, 需要采用cs__id或cs__title 2.查询数据(查) res=models.Students.objects.all() //获取的是多条数据 for item in res: print(item.id) print(item.username) print(item.age) print(item.gender) print(item.cs__id) print(item.cs.id) #for循环跨表的时候可以使用cs__id或cs.id print(item.cs__title) print(item.cs.title) 3.删除(删) models.Students.objects.filter(id=1).delete() models.Students.objects.filter(cs__id=1).delete() models.Students.objects.filter(username=‘xxx‘).delete() cid=input(‘请输入班级ID‘) models.Students.objects.filter(cs__id=cid).delete() ctitle=input(‘请输入班级名称‘) models.Students.objects.filter(cs__title=ctitle).delete() models.Students.objects.filter(cs.title=ctitle).delete() #cs.title=ctitle不成立,for循环中可以使用cs__id或cs.id,但是此处只能使用cs__id 4.修改数据(改) models.Students.objects.filter(id=1).update(username=‘xxx‘) ‘‘‘ #多对多 ‘‘‘ 班级: Id title 1 网络1班 2 软件1班 老师: Id name 1 Lee 2 Mark 3 Amie 老师--班级关系对应表(类 隐藏的多对多数据表) id TeacherID ClassId 1 1 2 1 1 2 2 2 1 2 2 1 ‘‘‘ ‘‘‘ 总结: 1.models中的一个类代表数库中的一个表,类中的一个对象代表数据表中的一行记录 2.Fk字段代表关联表中的一行数据 3.manyTomany字段,自动生成第三表,依赖关联表对第三张表进行操作。 ‘‘‘
以上是关于django之models学习总结的主要内容,如果未能解决你的问题,请参考以下文章
Django 学习笔记之五 Django中数据库中ManyToManyField及ForeignKey